2014-03-28 33 views
7

我知道Scala只能混入特性,它對依賴注入和餅形模式是有意義的。我的問題是爲什麼我仍然可以申報一個需要另一個「班級」而不是特質的班級。爲什麼自我類型可以聲明類

代碼:

class C 
class D { self : C =>} 

這仍然是成功的遵守。我認爲它應該編譯失敗,因爲在這一點上新的實例D(C是不是特性)。

編輯:

當嘗試實例d:

新的d C^//編譯失敗的C類必須是一個特點在混合

+1

您錯過了嘗試實際創建D的實例,請執行此操作並查看會發生什麼。 – johanandren

+0

'self'的類型是'D with C'。我不確定除文檔外是否還有用例。 –

+0

這是我的問題,如果創建一個D的實例,就有一個編譯錯誤。新D與C :10:錯誤:類C需要是一個特質混合在 新D與C –

回答

相關問題