3

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

示例代码:

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 = [].

4

1 回答 1

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

另请参阅比较句柄和值类

于 2013-05-24T19:27:00.830 回答