更简洁的方式来定义Scala Stream对象?
问题描述:
val notDivisibleBy2: Stream[Long] = 3L #:: 5L #:: notDivisibleBy2.tail.map(_ + 2)
println(notDivisibleBy2.take(3))
如果5L
被移除,一个StackOverflow
被发射。有没有办法让尾部计算工作,以便不必指定5L
?
答
当您删除5L
然后调用tail
函数时,您正在进入无限循环。正如你所看到的,notDivisibleBy2
的尾部是notDivisibleBy2.tail.map(_ + 2)
。因此,您需要删除5L
以及致电tail
。
val notDivisibleBy2: Stream[Long] = 3L #:: notDivisibleBy2.map(_ + 2)