6

根据 scala 文档,流实现了惰性列表,其中元素仅在需要时才被评估。例子;

val fibs: Stream[BigInt] = BigInt(0) #:: BigInt(1) #:: fibs.zip(fibs.tail).map(n => { 
    n._1 + n._2
})  

之后在 scala repl;

fibs(4)
fibs

它会打印出来;

res1: Stream[BigInt] = Stream(0, 1, 1, 2, 3, ?)

由于调用.length.last会导致无限循环,我怎样才能以最有效的方式获得值“3”(最后计算的值)?

4

1 回答 1

3

你不能。这不是Stream. 并且有理由,因为这将允许您观察一个随时间变化的值 a Stream,并且违反了 的(惰性)不可变性质Stream

于 2017-01-26T06:21:38.370 回答