无法使用matlab类中的属性
问题描述:
以下MATLAB代码不起作用。我想在函数转换器中有这样做的地方,MATLAB试图等于对象A
和B
,而不仅仅是设置值相同。任何解决方法?无法使用matlab类中的属性
classdef foo
%FOO Summary of this class goes here
% Detailed explanation goes here
properties
A=5
B=0
end
methods
function changer(obj)
obj.B=obj.A
end
end
end
答
我认为代码实际上工作正常,只是没有做你期望的。
您定义它的方式,foo
是值类,所以它具有值语义,而不是引用(或句柄)语义。当您执行changer(myobj)
时,MATLAB正在创建一个myobj的副本,其中新值为B并将其返回给您。原来的myobj
保持不变。在实现一个值类时,您通常会将输出参数添加到changer
以便能够进一步处理这个新副本。
function obj = changer(obj)
如果设置FOO成为手柄类,由handle
继承:
classdef foo<handle
它届时将有参考(或手柄)的语义,其中原始myobj
被修改(你那么不再需要来自changer
的输出参数):
>> myobj = foo;
>> changer(myobj); % or alternatively myobj.changer
>> myobj.B
ans =
5