为什么在下面的代码中会出现空指针异常?特质实例抛出空指针
object Test extends App{
trait MyTrait[A]{ self =>
val seq: Seq[A]
val size = seq.size // null pointer here
}
val p = new MyTrait[Int]{
val seq = Seq(1,2,3)
}
}
如果我将大小字段更改为懒惰,那就可以了。
感谢。就像使用def的想法一样,似乎更加整洁。 – Pengin
@Pengin - 我以为你使用'val'来缓存值。例如'List'需要'O(n)'来查找大小 - 它必须遍历列表。在那种情况下,'def'在加速事物方面没有任何用处。 –
@RexKerr - 是的,我把这里给出的简单例子与不同的代码搞混了。 – Pengin