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
我有一个 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