如何改变实例的属性在Matlab
问题描述:
我是新来MATLAB的,我想写改变这个对象的属性一类的方法:如何改变实例的属性在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.
答
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有更多的信息。
史诗般的答案,对我来说完全有意义,即使它不那么优雅 – mko 2013-03-08 09:10:37