take
というメソッドの動作が混乱しているIterator
。それは商品を消費していないようです。ここでの例である:スカラ反復子からのアイテムを消費する
scala> Iterator(1,2,3)
res0: Iterator[Int] = non-empty iterator
scala> res0 take 2 toArray
res1: Array[Int] = Array(1, 2)
scala> res0.next
res2: Int = 1
明らかステップ2は、2つのアイテムを消費するが、ステップ3でIterator
は、最初のアイテムのままです。実装を見ると、どんな種類のコピーやバッファリングも見ることができません。新しく追加されたものはIterator
です。どうすればそれが可能なのでしょうか?どのように私は本当にnアイテムを消費することができますか?
ありがとうretronym、私はポイントを参照してください。私が「ストリーム」を破棄した理由は、「現在のアイテム・ポインタ」のようなものがなかったことです(ちなみに、おそらくJavaの影響のために、いわゆるものに期待できるもの)。今私は、 ''現在のポインタ ''を ''ドロップ 'のシーケンスで取得し、 ''頭部'を見ることができることを見ています。私はもう一度やり直します。 – jglatre