0
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))
はNULLポインタ例外を与えますか?Scala NullPointerExceptionが発生しない限り
編集:
このコードはAppクラス内にあります。 instance.main(...)
が評価されるまで、val
は初期化されていないようです。私はlazy val
の実装が異なると仮定します。
fibs2にNPE評価 – Nyavro
ここに同じですが、レプリケート時にNPEを実行しても –