Matlab oop 的意外初始 属性 值

Unexpected initial property value with Matlab oop

我定义了一个名为 MySettings 的简单 class,它在内部适用于在名为 MySubSettings:

的 class 中定义的其他设置
%% --- Definition for MySubSettings
classdef MySubSettings < handle    
    properties
        Fifi = 666;        
    end    
end

%% --- Definition for MySettings
classdef MySettings < handle    
    properties
        Riri = 42; 
        Subs = MySubSettings();
    end   
end

第一次用s = MySettings();实例化MySettings一切正常(属性Riri初始化为42SubsMySubSettings 的实例 属性 Fifi 初始化为 666) ...到目前为止一切顺利 ...

现在,如果我修改 属性 值并将 s 重新分配给新实例,如下所示:

s.Riri = 0;
s.Subs.Fifi = 0;
s = MySettings();

然后检查新 s 实例中属性的新值...我有 s.Riri 等于 42 (如预期) ...但是 s.Subs.Fifi 仍然等于 0 我希望它被重新初始化为 666 (???)

为什么只初始化了Riri?我做错了什么还是错误?

注意:我遇到了 R2013b 和 R2014b 的问题。

我的误会...

在 class 定义中分配给属性的值不是 初始值 (例如在 C# 中)而是 默认值 并且在 class 首次使用后不再重新评估。

在我的示例中,由于 MySubSettings 是句柄 class,分配给它的任何值都将成为下一个实例的新默认值。

这个默认值的概念有点混乱……不过好吧,这是我的错误……抱歉。