使用Matlab中的方法设置对象属性

use*_*677 7 matlab matlab-class

我在MATLAB中创建一个类,虽然我有对象的小经验,我几乎可以肯定,我应该可以设置使用类方法的类属性.这在MATLAB中是否可行?

classdef foo
    properties
        changeMe 
    end

    methods
        function go()
          (THIS OBJECT).changeMe = 1;
        end
    end
end

f = foo;
f.go;


t.changeMe;
ans = 1
Run Code Online (Sandbox Code Playgroud)

Jon*_*nas 10

是的,这是可能的.请注意,如果创建值对象,则该方法必须返回该对象才能更改属性(因为值对象按值传递).如果创建句柄对象(classdef foo<handle),则通过引用传递对象.

classdef foo
    properties
        changeMe = 0;
    end

    methods
        function self = go(self)
          self.changeMe = 1;
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

如上所述,对值对象的调用设置方法返回已更改的对象.如果要更改对象,则必须将输出复制回对象.

f = foo;
f.changeMe
ans =
   0

f = f.go;

f.changeMe
ans =
   1
Run Code Online (Sandbox Code Playgroud)