为什么属性不从类方法中获取新值?

gny*_*his 8 matlab properties class

我试图更多地了解Matlab类及其属性.这是我创建的测试类:

classdef Test    
    properties
         % Properties of the network type
        some_var
    end

    methods
         function N = Test()
         end

        function change_var( N, val )
             N.some_var=val;
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

现在,我创建了这个类的实例,并调用"change_var()"...

>> a=Test;
>> a.change_var(2);
>> a.some_var

ans =

     []
Run Code Online (Sandbox Code Playgroud)

为什么属性"some_var"没有在赋值中使用值"val"?

b3.*_*b3. 12

所述Test类被定义为一个值级,而不是把手类.实际上,当你打电话时a.change_var,a是按值传递的.要将更改存储到some_var属性,请执行以下操作:

>> a = Test;
>> a = a.change_var(2);

另一种方法是创建Test一个句柄类,在这种情况下,您的问题中的示例将按预期工作.为此,handle通过将类定义的第一行更改为此类来继承该类:

classdef Test < handle

  • 值得一提的是,一旦类变为**句柄**,该类被赋予的变量将成为对内存中同一对象的引用.更改其中一个变量中的属性将改变其他变量中的属性值,类似于c#中的对象引用. (4认同)