外部イテレーター

参考:

ちょっとマイナーなeachの使い方 – Qiita

Ruby でのイテレータを使った繰り返し #2 – vivid memo

外部イテレーターを使って並列イテレーションを実現する – せかいや

Ruby で外部イテレータを使う – Camera Obscura

class Enumerator (Ruby 2.5.0)

instance method Enumerator#each (Ruby 2.5.0)

instance method Enumerator#next (Ruby 2.5.0)

instance method Enumerator#peek (Ruby 2.5.0)

next

「次」のオブジェクトを返します。

現在までの列挙状態に応じて「次」のオブジェクトを返し、列挙状態を1つ分進めます。列挙が既に最後へ到達している場合は、StopIteration 例外を発生します。このとき列挙状態は変化しません。つまりもう一度 next を呼ぶと再び例外が発生します。

※ Kernel.#loop は StopIteration を捕捉します。

next メソッドによる外部列挙の状態は他のイテレータメソッドによる内部列挙には影響を与えません。ただし、IO#each_line のように大元の列挙メカニズムが副作用を伴っている場合には影響があり得ます。

str = "xyz"
enum = str.each_byte
loop do
  puts enum.next
end
    # => 120
    #    121
    #    122

参考:

instance method Enumerator#next (Ruby 2.5.0)

Ruby 1.9のEnumeratorによる繰り返し処理 — ぺけみさお

feed

参考:

instance method Enumerator#feed (Ruby 2.5.0)

Rubyの外部イテレータでブロックつきメソッドを利用する — ぺけみさお

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA