Matlabクラスでは、 Dependent(計算されて保存されていない) であると同時に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か?はObservablepropertyOneではないことに注意してください。
編集:
それは機能しません(私が期待したように)。「PostSet」イベントはトリガーされません。では、このような状況にどのように対処すればよいでしょうか。propertyTwo非依存として作成し、 「propertyOne」が変更されるたびに「propertyOne」と同じ値に設定するより良い解決策はありますか?
Edit2:Amroの 回答の編集に 応じて、状況をより複雑に説明します。この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ね。