调用带括号和没有括号的类的依赖属性有什么区别?

时间:2014-08-01 13:23:20

标签: matlab properties parentheses calling-convention

说我有这样的课程:

classdef exampleClass

    properties (Dependent=true)
        x
    end

    methods
        function this=exampleClass(this)
            this.x = 4;
        end

        function x=get.x(this)
            x=4;
        end
    end
end

x作为classInstance.xclassInstance.x()访问有什么区别?

1 个答案:

答案 0 :(得分:2)

函数get.x(this)被称为属性x的getter。它实际上无论属性是否具有Dependent属性都无关,它对于任何类型的属性都是相同的。

如果你为你的属性定义了一个setter / getter,当你执行类似的操作时,Matlab将始终调用函数get.PropertyName或set.PropertyName:

tmp_var = my_instance.x

my_instance.x = 3.1416;

因此,如果您的代码中my_instance.xmy_instance.x()几乎相同。但是,如果您想遵循最佳实践,则必须避免使用函数调用。

现在,作为额外的一点:出于性能原因,建议您不要使用setter / getters,因为每次修改属性时(即使在课堂内),您都需要支付setter开销的代价/吸气剂。