bio*_*ios 1 matlab matlab-class
以下MATLAB代码不起作用.我想这事做的是,在功能转换,MATLAB试图等于对象A
和B
而不仅仅是设置值相同.任何解决方法?
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
Run Code Online (Sandbox Code Playgroud)
我认为代码实际上工作正常,只是没有做到你期望的.
您定义它的方式foo
是一个值类,因此它具有值语义,而不是引用(或句柄)语义.执行时changer(myobj)
,MATLAB将使用新值B创建myobj的副本并将其返回给您.原件myobj
保持不变.实现值类时,通常会添加一个输出参数changer
,以便能够进一步使用此新副本.
function obj = changer(obj)
Run Code Online (Sandbox Code Playgroud)
如果将foo设置为句柄类,则继承自handle
:
classdef foo<handle
Run Code Online (Sandbox Code Playgroud)
它将具有引用(或句柄)语义,其中原始myobj
被修改(然后您不再需要输出参数changer
):
>> myobj = foo;
>> changer(myobj); % or alternatively myobj.changer
>> myobj.B
ans =
5
Run Code Online (Sandbox Code Playgroud)