Эта тема объясняет, как MATLAB® определяет, какую функцию вызвать, когда несколько функций в текущем осциллографе имеют то же имя. Текущий осциллограф включает текущий файл, дополнительную подпапку private относительно в настоящее время рабочей функции, текущей папки и пути MATLAB.
MATLAB использует этот порядок приоритета:
Переменные
Прежде, чем принять, что имя совпадает с функцией, проверками MATLAB на переменную с тем именем в текущей рабочей области.
Если вы создаете переменную с тем же именем как функция, MATLAB не может запустить эту функцию, пока вы не очищаете переменную из памяти.
Функция или класс, имя которого совпадает с явным образом импортированным именем
import
функция позволяет функциям с составными именами (имена, состоявшие из нескольких частей, к которым соединяют точки) быть вызванными с помощью только итоговую часть составного имени. Когда имя функции совпадает с явным (неподстановочный знак), импортированная функция, MATLAB использует импортированное составное имя и дает ему приоритет по всем другим функциям с тем же именем.
Вложенные функции в текущей функции
Локальные функции в текущем файле
Функция или класс, имя которого совпадает с основанным на подстановочном знаке импортированным именем
Когда имя функции совпадает с основанной на подстановочном знаке импортированной функцией, MATLAB использует импортированное составное имя и дает ему приоритет по всем другим функциям с тем же именем, за исключением вложенных и локальных функций.
Приватные функции
Функции Private являются функциями в подпапке под названием 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
функция изменилась.
Изменитесь в приоритете основанного на подстановочном знаке импорта
Полностью определенные функции импорта не могут иметь того же имени как вложенные функции
Полностью определенная тень импорта внешние определения осциллографа того же имени
Обработка ошибок, когда импорт, не найденный
Вложенные функции наследовали операторов импорта от родительских функций