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

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

MATLAB использует этот порядок приоритета:

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

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

    Примечание

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

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

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

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

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

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

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

  6. Приватные функции

    Функции Private являются функциями в подпапке под названием 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 функция изменилась.

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

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

  • Полностью определенная тень импорта внешние определения осциллографа того же имени

  • Обработка ошибок, когда импорт, не найденный

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

Смотрите также

Похожие темы