2016-11-29 36 views
0

我有以下:更简洁的方式来定义Scala Stream对象?

val notDivisibleBy2: Stream[Long] = 3L #:: 5L #:: notDivisibleBy2.tail.map(_ + 2) 
println(notDivisibleBy2.take(3)) 

如果5L被移除,一个StackOverflow被发射。有没有办法让尾部计算工作,以便不必指定5L

回答

5

当您删除5L然后调用tail函数时,您正在进入无限循环。正如你所看到的,notDivisibleBy2的尾部是notDivisibleBy2.tail.map(_ + 2)。因此,您需要删除5L以及致电tail

val notDivisibleBy2: Stream[Long] = 3L #:: notDivisibleBy2.map(_ + 2) 
相关问题