Matlab从类方法

时间:2015-09-11 12:52:12

标签: matlab function class methods properties

我正在尝试从方法函数中访问类属性。当我从构造函数修改属性时,将调用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

1 个答案:

答案 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