問題タブ [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.
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 を作成していることを示唆しています。ここで何が起こっているかについてのヒントはありますか?