在类构造函数中,如果我调用另一个方法初始化某个属性,为什么该属性没有改变?
示例代码:
classdef Test
properties
prop
end
methods
function obj = Test()
obj.init();
end
function init(obj)
obj.prop = 1;
end
end
end
然后执行A = Test();
我得到了A.prop = []
。
答案 0 :(得分:9)
classdef Test < handle
这会将方法应用于引用的对象。
您必须返回修改后的对象:
function obj = Test()
obj.init();
end
应该是
function obj = Test()
obj = obj.init();
end
但是,您的init()
也没有将修改后的对象返回给调用者:
function init(obj)
obj.prop = 1;
end
应该是
function obj = init(obj)
obj.prop = 1;
end