From: Kenichi Kamiya Date: 2012-02-25T21:26:09+09:00 Subject: Re: mapping two (or more) arrays in parallel my approach # 1 itr_bolt = bolts.to_enum p nuts.map{|nut|assemble nut, itr_bolt.next} # 2 def parallel(*enums) return to_enum(__callee__, *enums) unless block_given? itrs = enums.map(&:to_enum) begin loop do yield(* itrs.map(&:next)) end rescue StopIteration self end end p parallel(nuts, bolts).map{|nut, bolt|assemble nut, bolt} # 3 p [].tap{|r| nuts.zip(bolts){|tuple|r << assemble(*tuple)} } # run http://ideone.com/NiJVa -- Posted via http://www.ruby-forum.com/.