Matlab类构造函数调用初始化方法

时间:2013-05-24 19:10:53

标签: matlab constructor

在类构造函数中,如果我调用另一个方法初始化某个属性,为什么该属性没有改变?

示例代码:

classdef Test
    properties
        prop    
    end 

    methods
        function obj = Test()
            obj.init(); 
        end     
        function init(obj)
            obj.prop = 1;
        end     
    end 
end

然后执行A = Test();我得到了A.prop = []

1 个答案:

答案 0 :(得分:9)

处理类

classdef Test < handle

这会将方法应用于引用的对象。

价值等级

您必须返回修改后的对象:

function obj = Test()
    obj.init();
end

应该是

function obj = Test()
    obj = obj.init();
end

但是,您的init()也没有将修改后的对象返回给调用者:

function init(obj)
    obj.prop = 1;
end

应该是

function obj = init(obj)
    obj.prop = 1;
end

另见comparing handle and value classes