Class 为什么属性不接受类方法中的新值?

Class 为什么属性不接受类方法中的新值?,class,matlab,properties,Class,Matlab,Properties,我试图了解更多关于Matlab类及其属性的知识。下面是我创建的一个测试类: classdef Test properties % Properties of the network type some_var end methods function N = Test() end function change_var( N, val ) N.som

我试图了解更多关于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
现在,我创建了这个类的一个实例,并调用“change_var()”


为什么属性“some_var”在赋值中没有采用值“val”?

测试类已被定义为。实际上,当您调用
a.change\u var
时,
a
按值传递。要存储对
some\u var
属性的更改,请执行以下操作:

>> a = Test; >> a = a.change_var(2);
该方法提供了一种更改属性的方法,但您还应该返回对象。您需要将方法修改为:

function N = change_var( N, val )
     N.some_var=val;
end
请注意,该函数返回修改过的对象。接下来,您需要更新
a
,更改如下:

a = a.change_var(2);

答对 了这非常有效,非常感谢:)我必须等待4分钟才能选择这个作为答案,但需要注意的是,一旦类成为句柄,该类被分配到的变量将成为内存中同一对象的引用。例如,更改其中一个变量中的属性将更改其他变量中的属性值,类似于c#中的对象引用。有关句柄与值类的讨论,请参阅。要清楚,此处显示的示例适用于值对象类(即:不是句柄对象),它本身不会更改原始对象的属性。函数在N参数中接收原始对象的副本,修改该对象的some_var属性,并返回该对象的修改副本。
function N = change_var( N, val )
     N.some_var=val;
end
a = a.change_var(2);