在 Martin Odersky 的“Scala 编程”一书中,有一个计算斐波那契数列的示例,它从作为参数传递给函数 fibFrom 的 2 个数字开始。
def fibFrom(a: Int, b: Int): Stream[Int] =
a #:: fibFrom(b, a + b)
如果将方法 take() 应用于此递归函数,例如:
fibFrom(1, 1).take(15).print
输出将是:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, empty
也许这个输出对于更有经验的人来说是显而易见的,但我不明白这个方法 take() 究竟是如何使流被进一步计算的。15 是否以某种方式不明显地传递到 fibFrom() 中?