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