理解 scala 语法 trait

13 浏览
0 Comments

理解 scala 语法 trait

我正在阅读关于scalatest的资料,经常遇到以下语法:

trait Sample {
  self : FlatSpec =>
}

这是什么意思?请用一个例子解释一下。

0
0 Comments

Scala中的trait是一种特殊的语法,被称为self-type。它表示trait Sample可以访问FlatSpec的所有成员,但是当你基于这个trait创建任何实例时,你必须将这个实例与FlatSpec的实例进行mixin(组合)。你无法创建一个没有提供FlatSpec实现的Sample实例,因为Sample可能使用那里的方法。

这可能看起来有点像继承,但实际上并不是。可以参考这个回答查看更多信息。

注意:self只是对当前对象的引用,不是一个语法元素。你可以用任何词来代替self。

0