exponenta event banner

Порядок приоритетности функций

В этом разделе описывается, как MATLAB ® определяет, какую функцию следует вызывать, если несколько функций в текущей области имеют одинаковые имена. Текущая область включает текущий файл, дополнительную частную подпапку относительно текущей выполняемой функции, текущую папку и путь MATLAB.

MATLAB использует следующий порядок очередности:

  1. Переменные

    Прежде чем предположить, что имя соответствует функции, MATLAB проверяет переменную с таким именем в текущей рабочей области.

    Примечание

    При создании переменной с тем же именем, что и функция, MATLAB не сможет запустить эту функцию до тех пор, пока переменная не будет удалена из памяти.

  2. Функция или класс, имя которого совпадает с явно импортированным именем

    import функция позволяет вызывать функции с составными именами (именами, состоящими из нескольких частей, соединенных точками), используя только конечную часть составного имени. Если имя функции соответствует явной (не подстановочной) импортированной функции, MATLAB использует импортированное составное имя и придает ему приоритет над всеми другими функциями с таким же именем.

  3. Вложенные функции в текущей функции

  4. Локальные функции в текущем файле

  5. Функция или класс, имя которого соответствует импортированному имени на основе подстановочных знаков

    Когда имя функции соответствует импортированной функции на основе подстановочных знаков, MATLAB использует импортированное составное имя и даёт ему приоритет над всеми другими функциями с таким же именем, кроме вложенных и локальных функций.

  6. Частные функции

    Частные функции - это функции во вложенной папке с именем private находится непосредственно под папкой текущего файла.

  7. Функции объекта

    Функция объекта принимает определенный класс объекта в списке входных аргументов. При наличии нескольких объектных функций с одинаковыми именами MATLAB проверяет классы входных аргументов, чтобы определить, какую функцию использовать.

  8. Конструкторы классов в папках @

    MATLAB использует конструкторы классов для создания множества объектов (таких как timeseries или audioplayer) и можно определить собственные классы с помощью объектно-ориентированного программирования. Например, при создании папки класса @polynom и функция конструктора @polynom/polynom.m, конструктор имеет приоритет над другими функциями с именем polynom.m в любом месте на пути.

  9. Загруженные модели Simulink ®

  10. Функции в текущей папке

  11. Функции в другом месте пути в порядке отображения

При определении приоритета функций в одной папке MATLAB учитывает тип файла в следующем порядке:

  1. Встроенная функция

  2. MEX-функция

  3. Файлы модели Simulink, которые не загружены, с типами файлов в следующем порядке:

    1. SLX-файл

    2. Файл MDL

  4. Диаграмма Stateflow ® с .sfx расширение

  5. Файл приложения (.mlapp), созданный с помощью MATLAB App Designer

  6. Файл программы с .mlx расширение

  7. P-файл (то есть кодированный программный файл с .p внутренний номер)

  8. Файл программы с .m расширение

Например, если MATLAB находит .m и P-файл с тем же именем в той же папке, он использует P-файл. Поскольку P-файлы не регенерируются автоматически, убедитесь, что P-файл регенерируется при каждом редактировании файла программы.

Чтобы определить вызовы функции MATLAB для определенного ввода, включите имя функции и вход в вызов which функция.

Изменение правил очередности функций

Начиная с R2019b, MATLAB изменяет правила разрешения имен, влияя на порядок приоритета переменных, вложенных функций, локальных функций и внешних функций. Сведения об изменениях и советы по обновлению кода см. в разделе Обновление кода для R2019b изменений очередности функций.

  • Идентификаторы не могут использоваться в двух целях внутри функции

  • Идентификаторы без явных объявлений не могут рассматриваться как переменные

  • Переменные не могут неявно использоваться родительскими и вложенными функциями

  • Изменение приоритета разрешения составного имени

  • Анонимные функции могут включать разрешенные и неразрешенные идентификаторы

Поведение import изменилась функция.

  • Изменение приоритета импорта на основе подстановочных знаков

  • Полные функции импорта не могут иметь то же имя, что и вложенные функции

  • Полный импорт определений теневых внешних областей с тем же именем

  • Ошибка при импорте

  • Вложенные функции наследуют инструкции импорта от родительских функций

См. также

Связанные темы