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

时间:2017-01-26 06:05:53

标签: scala stream lazy-evaluation memoization scala-streams

根据scala docs,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" (最后计算的值)以最有效的方式?

1 个答案:

答案 0 :(得分:3)

你做不到。这不是Stream的API的一部分。并且有理由,因为这样可以让您观察到Stream随时间变化的值,并且会违反Stream的(懒惰)不可变性质。