我是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。
答案 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中有更多信息。