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

Da *_*ang 3 matlab constructor

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

示例代码:

classdef Test
    properties
        prop    
    end 

    methods
        function obj = Test()
            obj.init(); 
        end     
        function init(obj)
            obj.prop = 1;
        end     
    end 
end
Run Code Online (Sandbox Code Playgroud)

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

Ole*_*leg 9

处理课程

classdef Test < handle
Run Code Online (Sandbox Code Playgroud)

这将对引用的对象应用方法.

价值等级

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

function obj = Test()
    obj.init();
end
Run Code Online (Sandbox Code Playgroud)

应该

function obj = Test()
    obj = obj.init();
end
Run Code Online (Sandbox Code Playgroud)

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

function init(obj)
    obj.prop = 1;
end
Run Code Online (Sandbox Code Playgroud)

应该是

function obj = init(obj)
    obj.prop = 1;
end
Run Code Online (Sandbox Code Playgroud)

另请参见比较句柄和值类.