Matlab set 属性 from class 方法
Matlab set property from class method
我正在尝试从方法函数中访问 class 属性。当我从构造函数修改 属性 时,会调用 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
如果我错了,请有人纠正我,但我假设 foo 中的 obj 是按值传递的。所以它确实在该函数 space 中得到更新,但没有 returned。所以有效的是让它 return 对象并在构造函数中捕获它。尝试:
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
我正在尝试从方法函数中访问 class 属性。当我从构造函数修改 属性 时,会调用 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
如果我错了,请有人纠正我,但我假设 foo 中的 obj 是按值传递的。所以它确实在该函数 space 中得到更新,但没有 returned。所以有效的是让它 return 对象并在构造函数中捕获它。尝试:
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