Можно задать методы класса в файлах, которые являются отдельными от файла определения класса, за определенными исключениями (см. Методы, которые вы должны определить в файле класса).
Чтобы использовать несколько файлов для определений классов, поместите файлы классов в папку с именем, начинающимся с @
символ, за которым следует имя класса (это называется папкой класса). Убедитесь, что родительская папка папки класса находится в MATLAB® путь.
Если папка класса содержится в одной или нескольких папках пакета, то папка пакета верхнего уровня должна быть в пути 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. Допустимые имена функции начинаются с буквенного символа и могут содержать буквы, цифры или символ нижнего подчеркивания.
Для получения информации об определении методов как функций C++ MEX, смотрите Использование MEX-функций для методов класса MATLAB.
Чтобы определить метод в отдельном файле в папке класса, создайте функцию в файле. Не используйте method
- end
ключевые слова в этом файле. Назовите файл с именем функции, как и с любой функцией.
В 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
folder, задайте функцию:
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
файл. Вы не можете задать эти методы в отдельных файлах:
Конструктор классов
Все функции, которые используют точки в своих именах, включая:
Методы конвертера, которые должны использовать имя пакета как часть имени класса, поскольку класс содержится в пакетах
Набор свойств и получение методов доступа