私はScalaでこれをしたいと思います。Scala: "insideから" Iteratorに値を渡す
def getFancyIterator: Iterator[Int] = {
... { /// Some arbitrary logic goes here: conditionals, loops, whatever
... {
... {
val x = ...
// Then at some point I call this:
feedNext(x)
}
}
}
}
今、私は何ができるように、例えば、通常のイテレータのようになります。すべての外から:
getFancyIterator.foreach(println)
もちろんのトリックは、私はすべて保存したくないということであり、任意の時点におけるコレクション内の値。言い換えれば、私のgetFancyIterator
関数は、イテレータのnext()
の値を "要求に応じて" "フィード"したいと思っています。
私はちょうどそれを行うには、いくつかの(あきれるほど)簡単な方法がなければならないと確信している、何とかそれは私の心に来ていません。..
UPDATE:本質的には 私がしたいですyield x
を実行しますが、通常のfor
ループからではなく、任意のコードから実行します。
を。それは実際に何を返すのですか? –
いいえ、関数全体が 'getFancyIterator'を返し、イテレータを返します。 'feedNext'は、結果のイテレータに次の値を「フィードする」場所をマークします。 –
編集してくれてありがとう、Daniela –