有人可以解释这个Scala代码吗?

问题描述:

我正在学习Scala,并在本书的源代码中找到了此代码,但在本书中没有对此进行实际解释。为了简单起见,我删除了详细信息。有人可以解释这个Scala代码吗?

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

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

我想知道这this: RefModel =>是什么,这是假设做什么。

这意味着trait ExecutionModel需要撰写RefModel发起ExecutionModel类。并且这个术语叫做自我类型,这意味着ExecutionModel需要一个RefModel这个类。

它经常使用饼图依赖注入。所以你可以使用它像:

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

文件:Cake Pattern

它被称为“自我型”,这意味着自(本)必须是指定的类型,以及作为类型(类或特质)被定义。

认为它是编译器指令:不允许,除非RefModel包括在混入被实例化这个特点(ExecutionModel)。这意味着RefModel的成员可用于ExecutionModel定义代码。