LoginSignup
2
0

More than 5 years have passed since last update.

Arrayで手軽にリングバッファ風の処理をする

Last updated at Posted at 2019-03-19

独自クラスやモンキーパッチを用意するほどでもない規模の処理向けです。
ループにおいて、繰り返し回数より小さいサイズのArrayからデータを抜きだすけど、Arrayの終端に達したら先頭からやり直したい時程度の規模で使えそうです。

追記:
素敵な回答をコメント頂いたのでそちらもご参照ください。

ary = [1,2,3,4]
enumerator = ary.to_enum

10.times do |i|
  begin
    puts enumerator.next
  rescue StopIteration
    # ary末尾に到達したので先頭に戻して同じ処理
    enumerator.rewind
    puts enumerator.next
  end
end

出力
1
2
3
4
1
2
3
4
1
2
2
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0