我注意到我可以使用抽象类型成员实例化scala特征。下面的代码编译。但是什么是t.B?
trait A {
type B
}
val t = new A {}
答案 0 :(得分:1)
类型为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]
关于可以说的一切。