我正在阅读关于scalatest的资料,经常遇到以下语法:
trait Sample { self : FlatSpec => }
这是什么意思?请用一个例子解释一下。
Scala中的trait是一种特殊的语法,被称为self-type。它表示trait Sample可以访问FlatSpec的所有成员,但是当你基于这个trait创建任何实例时,你必须将这个实例与FlatSpec的实例进行mixin(组合)。你无法创建一个没有提供FlatSpec实现的Sample实例,因为Sample可能使用那里的方法。
这可能看起来有点像继承,但实际上并不是。可以参考这个回答查看更多信息。
注意:self只是对当前对象的引用,不是一个语法元素。你可以用任何词来代替self。
用户名或电子邮箱地址
密码