2014-09-09 3 views
1

У меня есть два массива:Элегантный способ перебрать двух массивов

a = [1, 2 ,3] 
b = [4, 5, 5] 

Я хочу, чтобы перебрать все элементы обоих массивов. Один из способов сделать это было бы следующим:

(a + b).each do |element| 
    puts element 
end 

Это создает третий массив из a и b и затем итерации над ним. Есть ли более элегантные/рубийные методы, чтобы сделать то же самое?

+4

Что квалифицировалось бы как «более красноречивое»? –

+0

Например, без упаковки нового массива? –

+0

Можно написать петли дважды, каждый для одного списка, но это действительно нарушает DRY –

ответ

1

Если вы просто хотите напечатать каждый объект из обоих массивов:

puts a, b 

Если вы ищете решения более общего сценария, нет никакого способа, чтобы избежать создания третьего массива, но это третий массив уходит, если не назначен объекту. (Если вы позвонили third_arr = a + b.)

Если производительность является проблемой, вы можете избежать итерации через большой массив. Скажем, что длины a и b составляют 100 каждый, что означает, что «третий массив» будет содержать 200 элементов. Вы можете разделить работу по каждому отдельному массиву, сохраняя код DRY.

[a, b].each do |arr| 
    arr.each do |item| 
    # ... 
    end 
end 
Смежные вопросы