在Matlab中,是否可以为unique_together
定义自定义method
和property
块?
即
classdef
我的猜测是必须在classdef Foo < MyCustomSuperclass
properties (SomeBlockA)
Var1 = 2
Var2 = 5
end
properties (SomeBlockB)
Var3 = 2
Var4 = 5
end
end
上定义。
答案 0 :(得分:2)
不,你不能这样做。一些内置的MATLAB类(例如那些继承自matlab.unittest.TestCase
的类)具有带有自定义属性的属性和方法(例如TestParameter
等),但是MathWorks还没有给你创建自己的属性的能力自定义属性或方法属性。
但是,根据您为什么要这样做,您可能会滥用一段未记录的功能来实现您的目标。
所有类属性和方法(以及事件)都有一对未记录的属性Description
和DetailedDescription
,它们必须有一个字符串作为其值。因此,例如,您可以:
classdef myclass
properties (Description='SomeBlockA')
var1=1;
end
properties (Description='SomeBlockB')
var2=2;
end
end
此时此类将正常运行,但会在编辑器中显示红色下划线,表示&#34;未知属性名称&#39;说明&#39;&#34;。这没有功能效果,但很烦人;您可以通过在代码中包含编译语%#ok<*ATUNK>
( 致敬 unk nown)来抑制它,如下所示:
classdef myclass
%#ok<*ATUNK>
properties (Description='SomeBlockA')
var1=1;
end
properties (Description='SomeBlockB')
var2=2;
end
end
如果需要,可以使用元类查询属性的Description
属性:
>> a = ?myclass;
>> a.PropertyList(1).Description
ans =
SomeBlockA
>> a.PropertyList(2).Description
ans =
SomeBlockB
希望有所帮助!