我想要一个我可以作为fv=object.field
访问的只读字段,但是其值是。{
return是从对象的其他字段计算的(即返回值满足fv==f(object.field2)
)。
所需的功能与Python中的property
函数/装饰器相同。
我记得通过设置properties
块的参数来看到这是可能的参考,但是Matlab OOP文档非常分散,我再也找不到了。
答案 0 :(得分:5)
这称为“依赖”属性。使用派生属性的类的快速示例如下:
classdef dependent_properties_example < handle %Note: Deriving from handle is not required for this example. It's just how I always use classes.
properties (Dependent = true, SetAccess = private)
derivedProp
end
properties (SetAccess = public, GetAccess = public)
normalProp1 = 0;
normalProp2 = 0;
end
methods
function out = get.derivedProp(self)
out = self.normalProp1 + self.normalProp2;
end
end
end
定义了这个类后,我们现在可以运行:
>> x = dependent_properties_example;
>> x.normalProp1 = 3;
>> x.normalProp2 = 10;
>> x
x =
dependent_properties_example handle
Properties:
derivedProp: 13
normalProp1: 3
normalProp2: 10
答案 1 :(得分:2)
您可以使用属性访问方法:http://www.mathworks.co.uk/help/matlab/matlab_oop/property-access-methods.html
要定义get / set函数 - get函数应该允许您返回从其他成员计算的值。上面链接中的“何时使用具有相关属性的设置方法”部分给出了一个示例。