私は現在、「Programming in Scala」という本を読んで Scala を学んでいます。これまでのところ、(Java プログラマーの観点から) 奇妙に見えるすべてについて適切な説明がありましたが、Stream を使用してフィボナッチ数列を生成する次の 1 つの例は、私を困惑させます。
def fibFrom(a: Int, b: Int): Stream[Int] =
a #:: fibFrom(b, a + b)
ストリームの構築はどのように行われますか? もちろん、#::
オペレーターには何らかの責任があります。で終わるので、:
右結合であることは理解していますが、それではストリームの作成が説明されません。どういうわけか暗黙的にコンストラクターに変換されていると思いますが、その理由と正確な方法はわかりません。
私はすでに and で答えを探しましたが、Predef.scala
これLowPriorityImplicits.scala
までのところ運がありません。
誰でも私を啓発できますか?