【发布时间】:2012-03-20 05:42:35
【问题描述】:
MATLAB中以下文件夹名称是什么意思?
@folder+folder
我创建了一个使用classdef 语法的类Tata.m。
我应该把它放在@folder 还是+folder 中?
我查看了文档,但不是很清楚
在哪些情况下应该使用@folder,在哪些情况下应该使用+folder。
【问题讨论】:
标签: matlab
MATLAB中以下文件夹名称是什么意思?
@folder+folder我创建了一个使用classdef 语法的类Tata.m。
我应该把它放在@folder 还是+folder 中?
我查看了文档,但不是很清楚
在哪些情况下应该使用@folder,在哪些情况下应该使用+folder。
【问题讨论】:
标签: matlab
+folder 是一个 MATLAB 包文件夹。如果您将Tata.m 放在类似+folder/Tata.m 的位置,则MATLAB 将其称为folder.Tata 类。如果将它放在someOtherFolder/Tata.m 或someOtherFolder/@Tata/Tata.m 之类的文件夹中,MATLAB 将知道它为Tata。
将classdef 文件放在像@Tata 这样的类目录中会很有用,这样您就可以将一些(或所有)方法的定义放在单独的文件中。
doc 有更多详细信息。
编辑:要尝试澄清 @ 目录:从历史上看,具有方法 methodOne 和 methodTwo 的类 Tata 需要以下文件:
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) 块中。
【讨论】: