我正在玩 Scala 的流,但我不确定我是否明白这个想法。让我们考虑以下代码
def fun(s: Stream[Int]): Stream[Int] = Stream.cons(s.head, fun(s.tail))
执行这个
val f = fun(Stream.from(7))
f take 14 foreach println
结果与
7 8 9 10 ... up to 20
假设我明白这一点。
现在,稍微更改代码(将 2 添加到头部)
def fun(s: Stream[Int]): Stream[Int] = Stream.cons(s.head + 2, fun(s.tail))
结果是
9 10 11 ... up to 22
我想我又明白了。问题从下一个例子开始(d
def fun(s: Stream[Int]): Stream[Int] = Stream.cons(s.head / 2, fun(s.tail))
3 4 4 5 5 6 6 7 7 8 8 9 9 10
这个我不明白,请解释为什么会这样?类似地,减法也不像我预期的那样
def fun(s: Stream[Int]): Stream[Int] = Stream.cons(s.head - 2, fun(s.tail))
输出
5 6 7 8 9 10 ... up to 18