根据 scala docs 流实现了惰性列表,其中元素仅在需要时进行评估。例子;
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
的(懒惰)不变性.
关于Scala如何获得流的最后计算值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41867748/