我正在尝试实现一个具有可能提供给构造函数或可能以其他方法生成的属性的类。我不希望将数据保存到磁盘或在加载时生成。到目前为止,我所拥有的是:
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 方法(通过仅在保存语句上运行分析器来确认)。ProblemProperty 字段为空,我希望它保持这种状态。它不调用 get.Property5 方法。
如何避免调用 get.ProblemProperty?