我注意到我可以使用抽象类型成员实例化scala特征。下面的代码进行编译。但是什么是tB?
trait A {
type B
}
val t = new A {}
类型是t.B
。
trait A {
type B
def f(b: B)
}
val t = new A { def f(b: B) = {} }
t.f(0)
有错误
error: type mismatch;
found : Int(0)
required: t.B
类型不必像方法那样被“重写”。
这种类型是它自己的事情。它不是很有用,但事实就是如此。
像所有其他类型一样,它是的子类型Any
和的超类型Nothing
。
Seq[t.B](): Seq[Any]
Seq[Nothing](): Seq[t.b]
这就是所有可以说的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句