在Matlab中定义超类的自定义方法和属性块

时间:2017-01-25 09:59:03

标签: matlab class oop methods properties

在Matlab中,是否可以为unique_together定义自定义methodproperty块?

classdef

我的猜测是必须在classdef Foo < MyCustomSuperclass properties (SomeBlockA) Var1 = 2 Var2 = 5 end properties (SomeBlockB) Var3 = 2 Var4 = 5 end end 上定义。

1 个答案:

答案 0 :(得分:2)

不,你不能这样做。一些内置的MATLAB类(例如那些继承自matlab.unittest.TestCase的类)具有带有自定义属性的属性和方法(例如TestParameter等),但是MathWorks还没有给你创建自己的属性的能力自定义属性或方法属性。

但是,根据您为什么要这样做,您可能会滥用一段未记录的功能来实现您的目标。

所有类属性和方法(以及事件)都有一对未记录的属性DescriptionDetailedDescription,它们必须有一个字符串作为其值。因此,例如,您可以:

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

希望有所帮助!