请参考此, https://github.com/scala/scala/blob/v2.12.0-M1/src/library-aux/scala/Any.scala“Any”类如何与“this”变量一起使用?
抽象类的任何用途“这种”平等测试自我参考。据了解,“这个”没有什么特别的是scala。 “Any”中的“this”值如何处理?
请参考此, https://github.com/scala/scala/blob/v2.12.0-M1/src/library-aux/scala/Any.scala“Any”类如何与“this”变量一起使用?
抽象类的任何用途“这种”平等测试自我参考。据了解,“这个”没有什么特别的是scala。 “Any”中的“this”值如何处理?
this
在Scala中很特别。首先,根据语言规范的lexical syntax部分,this
是保留关键字。还看到,精确地限定this
关键字的语义的规范的6.5 This and Super部分:
this
可以出现在模板或 化合物类型的语句部分的表达。它表示由最内层 包含引用的模板或复合类型定义的对象。如果这是 复合类型,则this
的类型是该复合类型。如果是简单名称为C
的类或对象定义的 模板,则this
的类型 与C.this
的类型相同。
所以在你Any
类的情况下,this
是实际的对象平等的方法被要求提供参考。
this
是特殊的斯卡拉。它指的是发送消息的接收者(如果你更喜欢Smalltalk的命名法则)或者当前正在执行的方法被调用的对象(如果你更喜欢C++的命名法)。
它相当于在Smalltalk,自考,新话,红宝石,真想不到self
关键字,在Object Pascal,Objective-C中,斯威夫特,和他们的亲属或用Java,C#,VB.NET,ECMAScript中,C的this
关键字++ ,D,PHP,ECMAScript及其亲属或在Visual Basic中的Me
关键字或Eiffel中的Current
关键字。