我正在学习Scala并在本书的源代码中找到了这段代码,但书中没有对它进行实际解释。为简单起见,我删除了细节。
trait RefModel {
type Instrument = String
type Account = String
}
trait ExecutionModel {this: RefModel =>
case class Execution(account: Account, instrument: Instrument)
}
我想知道这个this: RefModel =>
是什么以及这个假设是什么。
答案 0 :(得分:1)
这意味着当{strong>发起 trait ExecutionModel
课程时,RefModel
需要撰写 ExecutionModel
。这个术语称为自我类型,这意味着ExecutionModel
需要RefModel
这个类。
object Foo extends ExecutionModel with RefModel // when initiate **ExecutionMode** bind with **RefModel**
文件:Cake Pattern
答案 1 :(得分:1)
它被称为"自我类型"意味着self(this)必须是指定的类型,以及被定义的类型(类或特征)。
将其视为编译器的指令:除非在mixin中包含ExecutionModel
,否则不要实例化此特征(RefModel
)。这意味着RefModel
的成员可以使用ExecutionModel
定义代码。