@folder和+文件夹

lol*_*ola 33 matlab

MATLAB中以下文件夹名称的含义是什么?

  • @folder
  • +folder

我创建了一个Tata.m使用classdef语法的类.我应该把它放在一个@folder或一个+folder

我查看了文档,但是在哪些情况下@folder应该使用以及在哪些情况下+folder应该使用它并不是很清楚.

Edr*_*ric 37

+folder件作品是一个MATLAB包文件夹.如果你放置Tata.m在类似的位置+folder/Tata.m,它将被MATLAB称为类folder.Tata.如果将它放在类似的文件夹中someOtherFolder/Tata.m,或者someOtherFolder/@Tata/Tata.m它将被MATLAB称为Tata.

classdef文件放在类目录中会很有用,这样可以将@Tata某些(或所有)方法的定义放在单独的文件中.

文档有更多细节.

编辑:要尝试澄清@目录:从历史上看,一类Tata与方法methodOnemethodTwo需要以下文件:

somePlaceOnThePath/@Tata/Tata.m
somePlaceOnThePath/@Tata/methodOne.m
somePlaceOnThePath/@Tata/methodTwo.m
Run Code Online (Sandbox Code Playgroud)

在"新"对象系统中,您仍然可以使用上面的布局而无需修改.在另一个极端,您可以将整个实现Tata放在一个classdef块中:

somePlaceOnThePath/Tata.m
Run Code Online (Sandbox Code Playgroud)

如果你有一些大的方法,或者想要将类的实现拆分Tata成几个文件以使并行开发更简单,你可以使用这样的classdef:

%# somePlaceOnThePath/@Tata/Tata.m:
classdef Tata
    methods
         result = methodTwo(obj, arg)

         function methodOne(obj)
             disp('hello from methodOne');
         end
    end
end
Run Code Online (Sandbox Code Playgroud)

并且

%# somePlaceOnThePath/@Tata/methodTwo.m:
function result = methodTwo(obj, arg)
% do stuff with obj and arg
end
Run Code Online (Sandbox Code Playgroud)

严格地说,对提前申报methodTwoclassdef,因为它使用的默认访问修饰符是可选的.如果您想methodTwo成为私有方法,可以将其放在一个methods (Access = private)块中.

  • 好的,谢谢Edric,现在,我理解+文件夹而不是@folder (2认同)