Scala抽象类型成员

无形的02

我注意到我可以使用抽象类型成员实例化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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章