我创建了一个MATLAB类,类似于:
classdef myclass properties x_array = []; end methods function increment(obj,value) obj.x_array = [obj.x_array ; value); end end end
问题是,x_array
当我调用increment()
函数时,属性永远不会被修改:ex:
>>s = myclass >>increment(s,5) >>s.x_array ans = []
我做了一些研究,我得出的结论是,这是因为MATLAB使用了Lazy Copy for objects,使得我的类继承HANDLE类应该已经解决了这个问题,但事实并非如此,有人知道为什么会发生这种情况吗?如果扩展句柄类是解决方案,这不是正确的方法:
classdef myclass < handle
还是有任何额外的步骤?
这与此问题类似.简而言之,您应该做的就是从句柄类继承.
快速举例
文件myclass.m的内容
classdef myclass现在,从Matlab命令提示符,您可以执行以下操作
>> s=myclass; >> s.increment(5) >> s.increment(6) >> s s = myclass handle properties: x_array: [5 6] lists of methods, events, superclasses