Scala 如何获取流的最后计算值?

Scala how to get last calculated value of stream?

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

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”(最后计算的值)最有效的方法?

你不能。这不是 Stream 的 API 的一部分。这是有原因的,因为这会让你观察到一个值随着时间的推移从 Stream 发生变化,这违反了 Stream.

的(惰性)不变性质