問題タブ [pass-by-name]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
84 参照

scala - この Iterator が無限にループするのはなぜですか?

私は連鎖しようとしていますIterators:

hasNextここでわかるように、これは無限にループします: https://scastie.scala-lang.org/qbHIVfsFSNO5OYmT4pkutA

これを実行して無限ループ中にスタックを調べると、concetentation でループしています。

(このスタックは Scala2.12.11のものですが、Scastie リンクは で同じ動作を示します2.13.2)。

メソッドを呼び出した後にイテレータを使用してはならないことはわかっていますが、これはうまくいくようです。を使用しvarて「現在の」反復子を指し、それを変更して、前の反復子の残りを追加する新しい反復子を指すようにします。

次のわずかな変更は機能します。

スキャスティ リンク: https://scastie.scala-lang.org/1X0jslb8T3WIFLHamspYAg

これは、どういうわけか、壊れたバージョンが自分自身を追加する Iterator を作成していることを示唆しています。ここで何が起こっているかについてのヒントはありますか?