複数の配列を同時にループしたい

複数の配列を同時にループしたいってときの実装について。何にも考えないのは、ループカウンタを用意して、それをまわせばよい。

aaa = %w{111 222}
bbb = %w{333 444}

i = 0

while i<aaa.size
  p aaa[i] + " " + bbb[i]
  i += 1
end

ただ、RubyにはEnumeratorがあるんだし、わざわざループカウンタを用意しなければいけないっていうのはあんまりセンスがないような気がする。というわけで、登場願うのがSyncEnumeratorクラス。

require 'generator'

enumerator = SyncEnumerator.new(%w{Four seven},%w{score years},%w{and ago})

enumerator.each do |row|
  p row
  puts '----'
end

マニュアルをみると、より納得。たぶん、Rubyにおいて、ループカウンタが必要な場所が出てきたらクラスをいろいろ検索してみたら面白いと思う。

このネタはRubyクックブックより。

Rubyクックブック ―エキスパートのための応用レシピ集

Rubyクックブック ―エキスパートのための応用レシピ集