請參考此, 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
關鍵字。