标签: scala
我正在阅读有关scalatest的内容,并且经常遇到这种语法
trait Sample { self : FlatSpec => }
这是什么意思?请举例说明
答案 0 :(得分:5)
它称为self-type。这意味着特征Sample可以访问FlatSpec中的所有成员,但是基于此特征创建任何实例时,您必须mixin(将该实例与FlatSpec实例结合)。如果不提供Sample的实现,则无法创建FlatSpec的实例,因为Sample可能会使用那里的方法。
Sample
FlatSpec
mixin
这看起来有点像继承,但不是。参见this答案
注意:self只是对当前对象的引用,而不是语法元素。您可以使用任何单词代替self。
self