PostSet Listener と組み合わせたクラスの状態に一貫性がないという問題があります。
classdef myClass < handle
properties (SetObservable,GetAccess = public, SetAccess = public )
propA;
propB;
end
methods
function myClass = myClass()
myClass.propA = zeros(2);
myClass.propB = zeros(2);
addlistener(myClass,{'propA','propB'},'PostSet',@myClass.propChange);
end
end
methods
function setSize(myClass, size)
myClass.propA = zeros(size);
myClass.propB = zeros(size);
end
function propChange(obj,eventData, metaProp)
disp(obj.propA - obj.propB)
end
end
end
主な機能は次のとおりです。
m = myClass();
m.setSize([1,2])
propA と propB のリスナー関数では、両方のプロパティを同じサイズにする必要があります。残念ながら、setSize を使用すると、短時間の矛盾が生じます。
これを解決する方法:
- PostSet が後で実行されるように propA と propB を同時に設定する方法はありますか?
- 一貫性フラグを別のプロパティとして使用できます。しかし、リスナーの実行を遅らせる方法は?
- 独自の通知を定義することはできますが、事前定義された関数ですべてうまく機能しています。