2012-12-26 23 views
1

可能重複:
Scala this aliasing and self type這種自我類型是什麼意思?

我碰到過這樣的一段代碼。

abstract class Tagged(private var t: Int) { self => 
... 
} 

我知道以下方式標記和B的依賴關係,但不明白上面的一個,任何人都可以解釋的區別?謝謝

abstract class Tagged(private var t: Int) { self:B => 
... 
} 
+0

Nit:我會把後者寫成'self:B' – 2012-12-26 08:17:11

回答

4

第一種形式引入了this的別名;第二種形式約束自我類型。

例如,在scala.Enumeration中,thisenum被用作嵌套類的Enumeration.this的別名。在規範的更改日誌附錄中,它表示別名被設計爲替換語法。

+4

我還想補充一點,當你有嵌套類並且你想從外部類訪問'this'內部階層。 – adelbertc

+0

是的,Enumeration就是這種情況,因此就是一個例子。 –