Я пытаюсь реализовать класс со свойством, которое может быть предоставлено конструктору или сгенерировано каким-либо другим методом.Я не хочу, чтобы данные сохранялись на диск или генерировались при загрузке.Пока что у меня есть:
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?