Una alternativa es usar each_with_index
. Un punto de referencia rápido muestra que esto es ligeramente más rápido que usar zip.
a.each_with_index do |item, index|
puts item, b[index]
end
puntos de referencia:
a = ["x","y","z"]
b = ["a","b","c"]
Benchmark.bm do |bm|
bm.report("ewi") do
10_000_000.times do
a.each_with_index do |item, index|
item_a = item
item_b = b[index]
end
end
end
bm.report("zip") do
10_000_000.times do
a.zip(b) do |items|
item_a = items[0]
item_b = items[1]
end
end
end
end
Resultados:
user system total real
ewi 7.890000 0.000000 7.890000 ( 7.887574)
zip 10.920000 0.010000 10.930000 (10.918568)
posible duplicado de [¿Cuál es la 'Rubí camino' para iterar sobre dos matrices al tiempo] (http://stackoverflow.com/questions/3580049/whats-the-ruby-way-to-iterate-over -two-arrays-at-once) – Vache