複数の配列を同時にループしたいってときの実装について。何にも考えないのは、ループカウンタを用意して、それをまわせばよい。
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クックブックより。
- 作者: Lucas Carlson,Leonard Richardson,株式会社クイープ
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/04/27
- メディア: 大型本
- 購入: 1人 クリック: 73回
- この商品を含むブログ (54件) を見る