我正在尝试从方法函数中访问类属性。当我从构造函数修改属性时,将调用setter并更改属性。但是当我从另一个方法修改属性时,即使再次调用setter,该属性也会在函数终止时恢复为先前的值。
我的代码有什么问题,请帮帮我! 感谢
代码如下:
classdef random
properties
x
end
methods
function obj=random(obj)
obj.x = 2
obj.foo(1)
obj %output x:2, but it should be 1!
end
function foo(obj,A)
obj.x = A;
obj %output x:1
end
function obj = set.x(obj,newVal)
obj.x = newVal;
end
end
end
答案 0 :(得分:1)
如果我错了,有人会纠正我,但我认为foo中的obj是按值传递的。所以它确实在该函数空间内更新但未返回。所以有效的是让它返回对象并在构造函数中捕获它。尝试:
classdef random
properties
x
end
methods
function obj=random(obj)
obj.x = 2;
obj = obj.func1(4);
disp(obj.x);
end
function [obj] = func1(obj,A)
obj.x = A;
disp(obj.x);
end
function obj = set.x(obj,newVal)
obj.x = newVal;
end
end
end