2017-06-19 108 views
1

我正在學習Scala,並在本書的源代碼中找到了此代碼,但在本書中沒有對此進行實際解釋。爲了簡單起見,我刪除了詳細信息。有人可以解釋這個Scala代碼嗎?

trait RefModel { 
    type Instrument = String 
    type Account = String 
} 

trait ExecutionModel {this: RefModel => 
    case class Execution(account: Account, instrument: Instrument) 
} 

我想知道這this: RefModel =>是什麼,這是假設做什麼。

回答

1

這意味着trait ExecutionModel需要撰寫RefModel發起ExecutionModel類。並且這個術語叫做自我類型,這意味着ExecutionModel需要一個RefModel這個類。

它經常使用餅圖依賴注入。所以你可以使用它像:

object Foo extends ExecutionModel with RefModel // when initiate **ExecutionMode** bind with **RefModel** 

文件:Cake Pattern

1

它被稱爲「自我型」,這意味着自(本)必須是指定的類型,以及作爲類型(類或特質)被定義。

認爲它是編譯器指令:不允許,除非RefModel包括在混入被實例化這個特點(ExecutionModel)。這意味着RefModel的成員可用於ExecutionModel定義代碼。

相關問題