В этом разделе описывается, как MATLAB ® определяет, какую функцию следует вызывать, если несколько функций в текущей области имеют одинаковые имена. Текущая область включает текущий файл, дополнительную частную подпапку относительно текущей выполняемой функции, текущую папку и путь MATLAB.
MATLAB использует следующий порядок очередности:
Переменные
Прежде чем предположить, что имя соответствует функции, MATLAB проверяет переменную с таким именем в текущей рабочей области.
Примечание
При создании переменной с тем же именем, что и функция, MATLAB не сможет запустить эту функцию до тех пор, пока переменная не будет удалена из памяти.
Функция или класс, имя которого совпадает с явно импортированным именем
import функция позволяет вызывать функции с составными именами (именами, состоящими из нескольких частей, соединенных точками), используя только конечную часть составного имени. Если имя функции соответствует явной (не подстановочной) импортированной функции, MATLAB использует импортированное составное имя и придает ему приоритет над всеми другими функциями с таким же именем.
Вложенные функции в текущей функции
Локальные функции в текущем файле
Функция или класс, имя которого соответствует импортированному имени на основе подстановочных знаков
Когда имя функции соответствует импортированной функции на основе подстановочных знаков, MATLAB использует импортированное составное имя и даёт ему приоритет над всеми другими функциями с таким же именем, кроме вложенных и локальных функций.
Частные функции
Частные функции - это функции во вложенной папке с именем private находится непосредственно под папкой текущего файла.
Функции объекта
Функция объекта принимает определенный класс объекта в списке входных аргументов. При наличии нескольких объектных функций с одинаковыми именами MATLAB проверяет классы входных аргументов, чтобы определить, какую функцию использовать.
Конструкторы классов в папках @
MATLAB использует конструкторы классов для создания множества объектов (таких как timeseries или audioplayer) и можно определить собственные классы с помощью объектно-ориентированного программирования. Например, при создании папки класса @polynom и функция конструктора @polynom/polynom.m, конструктор имеет приоритет над другими функциями с именем polynom.m в любом месте на пути.
Загруженные модели Simulink ®
Функции в текущей папке
Функции в другом месте пути в порядке отображения
При определении приоритета функций в одной папке MATLAB учитывает тип файла в следующем порядке:
Встроенная функция
MEX-функция
Файлы модели Simulink, которые не загружены, с типами файлов в следующем порядке:
SLX-файл
Файл MDL
Диаграмма Stateflow ® с .sfx расширение
Файл приложения (.mlapp), созданный с помощью MATLAB App Designer
Файл программы с .mlx расширение
P-файл (то есть кодированный программный файл с .p внутренний номер)
Файл программы с .m расширение
Например, если MATLAB находит .m и P-файл с тем же именем в той же папке, он использует P-файл. Поскольку P-файлы не регенерируются автоматически, убедитесь, что P-файл регенерируется при каждом редактировании файла программы.
Чтобы определить вызовы функции MATLAB для определенного ввода, включите имя функции и вход в вызов which функция.
Начиная с R2019b, MATLAB изменяет правила разрешения имен, влияя на порядок приоритета переменных, вложенных функций, локальных функций и внешних функций. Сведения об изменениях и советы по обновлению кода см. в разделе Обновление кода для R2019b изменений очередности функций.
Идентификаторы не могут использоваться в двух целях внутри функции
Идентификаторы без явных объявлений не могут рассматриваться как переменные
Переменные не могут неявно использоваться родительскими и вложенными функциями
Изменение приоритета разрешения составного имени
Анонимные функции могут включать разрешенные и неразрешенные идентификаторы
Поведение import изменилась функция.
Изменение приоритета импорта на основе подстановочных знаков
Полные функции импорта не могут иметь то же имя, что и вложенные функции
Полный импорт определений теневых внешних областей с тем же именем
Ошибка при импорте
Вложенные функции наследуют инструкции импорта от родительских функций