如何在Matlab中更改实例的属性

时间:2013-03-08 08:49:23

标签: matlab matlab-class

我是MATLAB的新手,我想写一个类的方法来改变这个对象的属性:

classdef Foo

  properties
    a = 6;
  end
  methods
    function obj = Foo()
    end

    function change(obj,bar)
      obj.a = bar
    end
  end
end




foo = Foo()

foo.change(7) //here I am trying to change the property to 7

事实证明该物业仍然是6。

1 个答案:

答案 0 :(得分:3)

MATLAB区分值类句柄类。值类的实例被隐含地复制到赋值(因此表现得像普通的MATLAB矩阵),句柄类的实例不是(因此表现得像其他OOP语言中的实例)。

因此,您必须返回值类的修改对象:

classdef ValueClass
    properties
        a = 6;
    end
    methods
        function this = change(this, v)
            this.a = v;
        end
   end
end

这样称呼:

value = ValueClass();
value = value.change(23);
value.a

或者,您可以从handle类派生您的课程:

classdef HandleClass < handle
    properties
        a = 6;
    end
    methods
        function change(this, v)
            this.a = v;
        end
   end
end

并称之为:

h = HandleClass();
h.change(23);
h.a

MATLAB documentation中有更多信息。