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

时间:2017-06-19 03:25:30

标签: scala

我正在学习Scala并在本书的源代码中找到了这段代码,但书中没有对它进行实际解释。为简单起见,我删除了细节。

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

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

我想知道这个this: RefModel =>是什么以及这个假设是什么。

2 个答案:

答案 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定义代码。