2017-01-26 6 views
4

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:ストリーム【のBigInt] =ストリーム(?0、1、1、2、3、)

Iの値を取得する方法、.LENGTH又は .last原因無限ループを呼び出すので、「 3 "(最後に計算された値)を最も効率的に使用しますか?

答えて

3

できません。これは、StreamのAPIの一部ではありません。そして理由があると、時間の経過と共に変化する値をStreamから観察することができ、それはStreamの(遅延した)不変の性質に違反します。

関連する問題