我碰到過這樣的一段代碼。
abstract class Tagged(private var t: Int) { self =>
...
}
我知道以下方式標記和B的依賴關係,但不明白上面的一個,任何人都可以解釋的區別?謝謝
abstract class Tagged(private var t: Int) { self:B =>
...
}
我碰到過這樣的一段代碼。
abstract class Tagged(private var t: Int) { self =>
...
}
我知道以下方式標記和B的依賴關係,但不明白上面的一個,任何人都可以解釋的區別?謝謝
abstract class Tagged(private var t: Int) { self:B =>
...
}
第一種形式引入了this
的別名;第二種形式約束自我類型。
例如,在scala.Enumeration中,thisenum
被用作嵌套類的Enumeration.this
的別名。在規範的更改日誌附錄中,它表示別名被設計爲替換語法。
我還想補充一點,當你有嵌套類並且你想從外部類訪問'this'內部階層。 – adelbertc
是的,Enumeration就是這種情況,因此就是一個例子。 –
Nit:我會把後者寫成'self:B' – 2012-12-26 08:17:11