MATLAB - 在发生其他 属性 更改时更新私有 属性

MATLAB - Update private property in case of other property change

我有一个 class 和一个受抚养人 属性 需要一段时间才能评估。出于这个原因,我希望它不会在每次查询时都被评估,而只是在实例化对象和更改某些属性时才评估。我发现 this interesting solution 是基于定义一个额外的私有 属性 ,它在必要时设置,依赖 属性 取这个额外私有 属性 的值。

现在的问题是:如何确保在实例化对象时设置这个私有 属性 并在对象的某些属性更改时自动更新?

提议的解决方案是完美的,只需确保在您的 class 构造函数中为依赖项 属性 及其代理定义默认值并设置为适合您需要的默认值:

methods
    function this = MyClass(...)
        % default starting values for your properties 
        this.MyProperty1 = 0;
        this.MyProperty2 = -8;
        this.MyProperty3 = 3;

        % calculate the initial value of your dependent
        % property based on the default values of the other
        % properties (this is basically the computeModulus
        % function of your example)
        this.UpdateMyDependent();
    end
end

当其他属性被修改时使您的依赖 属性 更新的逻辑已经包含在链接线程中,请在您的 class 中实现它们。

function this = set.MyProperty1(this,value)
    this.MyProperty1 = value;
    this.UpdateMyDependent();
end

function this = set.MyProperty2(this,value)
    this.MyProperty2 = value;
    this.UpdateMyDependent();
end

function UpdateMyDependent(this)
    this.MyDependentProxy = this.MyProperty1 * this.MyProperty2;
end

function value = get.MyDependent(this)
    value = this.MyDependentProxy;
end