【发布时间】:2012-01-16 19:16:18
【问题描述】:
为什么在 MATLAB 的每个类中我都必须使用“this”?我认为在 C++ 中我不需要使用“this”,只要我愿意。 MATLAB中也是这样吗?
【问题讨论】:
标签: matlab
为什么在 MATLAB 的每个类中我都必须使用“this”?我认为在 C++ 中我不需要使用“this”,只要我愿意。 MATLAB中也是这样吗?
【问题讨论】:
标签: matlab
简而言之,您必须使用某种显式引用。
首先,与 C++/C#/Java 中的 this 不同,您可以使用任何您想要的名称。 必须使用显式调用的原因是Matlab designers decision。 这个想法是支持对对象的 Matlab 向量操作,就好像它们是 结构。以下是上面链接的片段:
虽然带有隐式对象参数的语言提供了“this”关键字 要访问隐式对象,它们通常不需要您访问 通过“这个”获得财产。如果 MATLAB 具有隐式属性,则逻辑 对基于数组的对象的扩展将是无索引:
S = S + (k).Value;
编辑: 在@AndrewJanke 的好评之后,我想补充一点,MATLAB 可以将 this 作为隐式引用,并且只强制在基于数组的对象的索引中使用它。然而,MATLAB 设计人员并未选择这种方法。
【讨论】:
self。这也是一种约定,就像在 MATLAB 中一样。
f(A, B, C) 方法,任何输入都可能是方法调度对象,或者它们在概念上可能是对等点,因此尚不清楚先验应该成为this。它甚至可以称为f(2, 3, X)。索引问题可以通过隐含的this 参数来解决,并且只要求您在方法中使用()-indexing 时使用它,就像在C++ 中调用重载的[] 时一样。 (我认为。)
foo(obj) 语法及其支持的功能。例如,它允许您使用 plus() 以可交换的方式定义 + 行为,或定义可用作现有函数参数的直接替换的类。