Scala 抽象类型成员

Scala Abstract Type Member

我注意到我可以用抽象类型成员实例化 Scala 特征。下面的代码编译。但是t.B是什么?

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

类型不必像方法那样"overriden"。

这个类型是它自己的东西。不是很有用,但就是这样。

与所有其他类型一样,它是 Any 的子类型和 Nothing 的超类型。

Seq[t.B](): Seq[Any]
Seq[Nothing](): Seq[t.b]

这就是关于它的所有内容。