我目前正在通过“Scala 编程”一书学习 Scala。到目前为止,对于看起来很奇怪的所有事情都有很好的解释(从 Java 程序员的角度来看),但是这个使用 Stream 生成斐波那契数列的例子让我有点困惑:
def fibFrom(a: Int, b: Int): Stream[Int] =
a #:: fibFrom(b, a + b)
Stream的构建是如何完成的?当然,#::
运营商对此负有某种责任。我知道,因为它以 结尾:
,所以它是右关联的,但这并不能解释 Stream 的创建。我猜它以某种方式隐式转换为构造函数,但我不明白为什么以及如何准确。
我已经在寻找答案Predef.scala
,LowPriorityImplicits.scala
但到目前为止还没有运气。
任何人都可以启发我吗?