В классе Matlab кажется синтаксически правильным объявить свойство , которое является зависимым(вычисляются не сохраненные )и наблюдаемые одновременно. Рассмотрим код
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
как независимую и установить для него то же значение, что и для свойства One, каждый раз, когда изменяется значение свойства One?
Редактировать2: В ответ на заявление Амроредактирование его ответа Я объясню ситуацию более сложной. Рассмотрим это 2 класса:
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
. однако, если я сделаю свойство a
из AClass
наблюдаемым, это не решит мою проблему, не так ли? События «PostSet» не будут распространяться на свойство b
, не так ли?