@folder и + папка
Что означают следующие имена папок в MATLAB?
@folder
+folder
Я создал класс Tata.m
который использует classdef
синтаксис. Должен ли я положить его в @folder
или +folder
?
Я посмотрел на документацию, но не совсем понятно, в каких случаях @folder
следует использовать и в каких случаях +folder
должен быть использован.
1 ответ
+folder
piece это папка пакета MATLAB. Если вы разместите Tata.m
в таком месте, как +folder/Tata.m
, это будет известно MATLAB как класс folder.Tata
, Если вы поместите его в папку, как someOtherFolder/Tata.m
, или же someOtherFolder/@Tata/Tata.m
, это будет известно MATLAB как Tata
,
Это может быть полезно разместить classdef
файл в каталоге класса, как @Tata
чтобы позволить вам поместить определение некоторых (или всех) методов в отдельных файлах.
У документа есть больше деталей.
РЕДАКТИРОВАТЬ: Чтобы попытаться уточнить @
справочники: исторически, класс Tata
с методами methodOne
а также methodTwo
потребуются следующие файлы:
somePlaceOnThePath/@Tata/Tata.m
somePlaceOnThePath/@Tata/methodOne.m
somePlaceOnThePath/@Tata/methodTwo.m
В "новой" объектной системе вы все равно можете использовать макет выше без изменений. С другой стороны, вы можете поместить всю реализацию Tata
в одном classdef
блок в:
somePlaceOnThePath/Tata.m
Если у вас есть несколько больших методов, или вы хотите разделить реализацию класса Tata
в несколько файлов, чтобы упростить параллельную разработку, вы можете использовать classdef, например:
%# somePlaceOnThePath/@Tata/Tata.m:
classdef Tata
methods
result = methodTwo(obj, arg)
function methodOne(obj)
disp('hello from methodOne');
end
end
end
А также
%# somePlaceOnThePath/@Tata/methodTwo.m:
function result = methodTwo(obj, arg)
% do stuff with obj and arg
end
Строго говоря, предварительная декларация methodTwo
в classdef
не является обязательным, потому что он использует спецификаторы доступа по умолчанию. Если бы вы хотели иметь methodTwo
быть частным методом, вы можете поместить его в methods (Access = private)
блок.