def fix[A, B](fn : Function2[Function1[A, B], A, B]) : Function1[A, B] =
(x : A) => fn(fix(fn), x)
lazy val fibs1 = fix[(Int, Int), Stream[Int]](
(fn, a) => a._1 #:: fn((a._2, a._1 + a._2))
)
val fibs2 = fix[(Int, Int), Stream[Int]](
(fn, a) => a._1 #:: fn((a._2, a._1 + a._2))
)
在学习Scala时遇到了一个奇怪的错误。为什么fibs1((1,1))
不产生错误,而fibs2((1, 1))
给出空指针异常?
编辑:
此代码位于App类中。似乎val
在instance.main(...)
被评估之前未初始化。我假设lazy val
的实现是不同的。
答案 0 :(得分:0)