Scala抽象类型成员

时间:2015-06-14 10:03:26

标签: scala abstract-type

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

trait A {
    type B
}

val t = new A {}

1 个答案:

答案 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]

关于可以说的一切。