Можно задать методы класса в файлах, которые являются отдельными от файла определения класса за определенными исключениями (см. Методы, которые Необходимо Задать в classdef Файле).
Чтобы использовать несколько файлов для определений классов, поместите файлы класса в папку, имеющую имя, начинающееся с @
символ следовал под названием класс (это называется папкой класса). Убедитесь, что родительская папка папки класса находится на MATLAB® path.
Если папка класса содержится в одной или нескольких папках пакета, то папка пакета верхнего уровня должна быть на пути MATLAB.
Например, папка @MyClass
должен содержать файл MyClass.m
(который содержит classdef
блокируйтесь), и содержит другие методы и функцию, определяемую в файлах, имеющих .m
расширение. Папка @MyClass
может содержать много файлов:
@MyClass/MyClass.m @MyClass/subsref.m @MyClass/subsasgn.m @MyClass/horzcat.m @MyClass/vertcat.m @MyClass/myFunc.m
MATLAB обрабатывает любой файл функции в папке класса как метод класса. Файлами функции может быть код MATLAB (.m
), формат файла Живого кода (.mlx
), MEX-функции (зависимые расширения платформы), и Pcode-файлы (.p
). Базовое имя файла должно быть допустимым именем функции MATLAB. Допустимые имена функций начинаются с буквенного символа и могут содержать буквы, числа или символы нижнего подчеркивания.
Для получения информации об определении методов как MEX-функции C++ смотрите Используя MEX-функции для Методов класса MATLAB.
Чтобы задать метод в отдельном файле в папке класса, создайте функцию в файле. Не используйте method
конец
ключевые слова в том файле. Назовите файл с именем функции, как с любой функцией.
В myFunc.m
файл, реализуйте метод:
function output = myFunc(obj,arg1,arg2) ...% code here end
Это - хорошая практика, чтобы объявить функциональную подпись в classdef
файл в блоке методов:
classdef MyClass methods output = myFunc(obj,arg1,arg2) end ... end
classdef
ФайлЕсли вы задаете атрибуты метода для метода, который вы задаете в файле отдельной функции, включаете сигнатуру метода в methods
блокируйтесь в classdef
файл. Этот блок методов задает атрибуты, которые применяются к методу.
Например, следующий код показывает метод с Access
установите на private
в methods
блок. Реализация метода находится в отдельном файле. Не включайте function
или end
ключевые слова в methods
блок. Включайте только функциональную подпись, показывающую аргументы ввода и вывода.
classdef MyClass methods (Access = private) output = myFunc(obj,arg1,arg2) end end
В файле с именем myFunc.m
, в @MyClass
папка, задайте функцию:
function output = myFunc(obj,arg1,arg2) ... end
Чтобы создать статический метод, установите метод Static
припишите true
и перечислите функциональную подпись в блоке статических методов в classdef
файл. Включайте аргументы ввода и вывода с именем функции. Например:
classdef MyClass ... methods (Static) output = staticFunc1(arg1,arg2) staticFunc2 end ... end
Задайте функции в отдельных файлах с помощью той же функциональной подписи. Например, в файле @MyClass/staticFunc1.m
:
function output = staticFunc1(arg1,arg2) ... end
и в @Myclass/staticFunc2.m
:
function staticFunc2 ... end
classdef
ФайлЗадайте следующие методы в classdef
файл. Вы не можете задать эти методы в отдельных файлах:
Конструктор класса
Все функции, которые используют точки на их имена, включая:
Методы конвертера, которые должны использовать имя пакета в качестве части имени класса, потому что класс содержится в пакетах
Набор свойств и получает методы доступа