@folder и + папка

31

В чем смысл следующих имен папок в MATLAB?

  • @folder
  • +folder

Я создал класс Tata.m, который использует синтаксис classdef. Должен ли я помещать его в @folder или +folder?

Я просмотрел документацию, но это не совсем понятно в каких случаях следует использовать @folder и в каких случаях следует использовать +folder.

Теги:

1 ответ

32

Часть +folder - это папка пакета MATLAB. Если вы поместите Tata.m в такое место, как +folder/Tata.m, он будет известен MATLAB как класс folder.Tata. Если вы поместите его в папку типа someOtherFolder/Tata.m или someOtherFolder/@Tata/Tata.m, он будет известен MATLAB как Tata.

Может быть полезно поместить файл classdef в каталог класса, например @Tata, чтобы вы могли поместить определение некоторых (или всех) методов в отдельные файлы.

doc содержит более подробную информацию.

РЕДАКТИРОВАТЬ: Чтобы попытаться прояснить каталоги @: исторически для класса 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).

  • 2
    хорошо, спасибо Эдрик, теперь я понимаю папку +, но не @folder
  • 0
    Ссылка на документацию не работает, и я не могу понять, какой она должна быть. Я также все еще пытаюсь понять значение и значение «папки пакета MATLAB».
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню