无法使用matlab类中的属性

时间:2011-11-29 16:55:58

标签: matlab matlab-class

以下MATLAB代码不起作用。我想它在函数转换器中有一些功能,MATLAB试图使对象AB相等,而不仅仅是将值设置为相同。对此有何解决方法?

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

1 个答案:

答案 0 :(得分:5)

我认为代码实际上工作正常,只是没有做到你期望的。

您定义它的方式,foo value 类,因此它具有值语义,而不是引用(或句柄)语义。当您执行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