コンストラクターに提供されるか、他のメソッドで生成される可能性のあるプロパティを持つクラスを実装しようとしています。データをディスクに保存したり、ロード時に生成したりしたくありません。私がこれまでに持っているものは次のとおりです。
classdef MyClass
properties(GetAccess = public, SetAccess = private)
Property1
Property2
Property3
end
properties(Access = private)
Property4
end
properties(Transient = true)
ProblemProperty
end
properties(Dependent = true, Transient = true)
Property5
end
methods
function MyClass
% Constructor.
end
function val = get.Property5(B)
val = SomeFunction(Property1);
end
function val = get.ProblemProperty(B)
if isempty(B.ProblemProperty)
B = GenerateProblemProperty(B);
end
val = B.ProblemProperty;
end
function B = GenerateProblemProperty(B)
B.ProblemProperty = AnotherFunction(B.Property2);
end
end
end
問題は、オブジェクトをディスクに保存しようとすると、Matlab が get.ProblemProperty メソッドを呼び出すことです (save ステートメントだけでプロファイラーを実行することで確認されます)。ProblemProperty フィールドは空で、そのままにしておきたいです。get.Property5 メソッドを呼び出しません。
get.ProblemProperty の呼び出しを回避するにはどうすればよいですか?