読者です 読者をやめる 読者になる 読者になる

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

Ruby

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

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クックブック ―エキスパートのための応用レシピ集