在Matlab类中有更清晰的自引用方法吗?

时间:2016-07-26 21:53:04

标签: matlab oop properties self-reference

如果我们想要调用一个修改对象属性的函数,除了在函数中使用 obj.property 之外,还有另一种自引用方法吗?

示例(在Java等其他语言中):

public void doSomething(int arg)
    foobar = arg;
end

但是Matlab的例子:

classdef Foo < handle
    properties
        foobar = 0;
    end
    methods
        function obj = Foo(arg)
            if nargin > 0 
                obj.foobar = arg;
            end
        end
        function doSomething(obj, arg)
            obj.foobar = obj.foobar + arg; % Needed to reference the current object
        end
    end   
end

有了更多属性,通过编写所有&#34; obj。&#34;它可能会变得一团糟。我看到有些人使用&#34; o。&#34; (较少的字符看起来更好一些),但我想知道是否有更好的方法(即:不使用 obj。)或者这是唯一的选择吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

这是唯一的选择,是的。传递obj作为第一个参数是必要的,因为matlab使用&#34;动态调度&#34;选择正确版本的函数。即如果你有两个类并且都定义doSomething个函数,matlab将根据第一个参数的类型调用正确的版本;这就是为什么成员函数的第一个参数(构造函数除外)总是需要成为对象本身。

然而在java中,一些完全不同的东西正在发生,因为它是一种编译语言,而不是一种解释型语言。这是一个多态性等案例。

所以没有。没有捷径。这就是matlab类的工作原理。