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

发布于 2024-10-22 08:49:58 字数 289 浏览 2 评论 0 原文

我正在 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

I am creating a class in MATLAB and while I have little experience with objects, I am almost positive I should be able to set a class property using a class method. Is this possible in MATLAB?

classdef foo
    properties
        changeMe 
    end

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

f = foo;
f.go;


t.changeMe;
ans = 1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

水晶透心 2024-10-29 08:49:58

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

classdef foo
    properties
        changeMe = 0;
    end

    methods
        function self = go(self)
          self.changeMe = 1;
        end
    end
end

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

f = foo;
f.changeMe
ans =
   0

f = f.go;

f.changeMe
ans =
   1

Yes, this is possible. Note that if you create a value object, the method has to return the object in order to change a property (since value objects are passed by value). If you create a handle object (classdef foo<handle), the object is passed by reference.

classdef foo
    properties
        changeMe = 0;
    end

    methods
        function self = go(self)
          self.changeMe = 1;
        end
    end
end

As mentioned above, the call of a setting method on a value object returns the changed object. If you want to change an object, you have to copy the output back to the object.

f = foo;
f.changeMe
ans =
   0

f = f.go;

f.changeMe
ans =
   1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文