在 Matlab 类中,同时声明依赖(计算而不存储)和 Observable的属性似乎在语法上是正确的。考虑代码
properties (Access = private)
instanceOfAnotherClass
end
properties (SetAccess = private, Dependent, SetObservable)
propertyTwo
end
methods
function val = get.propertyTwo(this)
val = this.instanceOfAnotherClass.propertyOne;
end
end
这是否按预期工作?也就是说,如果propertyOne
存储的对象的instanceOfAnotherClass
属性发生更改,是否会触发属性更改事件propertyTwo
?请注意,这propertyOne
不是Observable。
编辑:
它不起作用(如我所料)。'PostSet' 事件未触发。那么我该如何处理这种情况呢?是否有更好的解决方案创建propertyTwo
为非依赖项并将其设置为每次“propertyOne”更改时与“propertyOne”相同的值?
Edit2: 针对Amro 对其答案的编辑,我将解释更复杂的情况。考虑这两个类:
classdef AClass < handle
properties
a
end
end
classdef BClass < handle
properties (Access = private)
aClassInst
end
properties (Dependent, SetObservable, SetAccess = private)
b
end
methods
function this = BClass(aClass)
this.aClassInst = aClass;
end
function val = get.b(this)
val = this.aClassInst.a;
end
end
end
使用所有这些代码的类不应访问AClass
. 它只与实例交互BClass
并想监听属性的变化b
。但是,如果我使 observable 的属性a
无法解决AClass
我的问题,会吗?'PostSet' 事件不会传播到 property b
,是吗?