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
ね。