Что такое «Ruby-способ» для итерации по двум массивам одновременно

Больше синтаксического любопытства, чем проблемы, которую нужно решить ...

У меня есть два массива одинаковой длины, и я хочу перебрать их оба одновременно - например, чтобы вывести оба их значения по определенному индексу.

@budget = [ 100, 150, 25, 105 ]
@actual = [ 120, 100, 50, 100 ]

Я знаю, что могу использовать each_index и индексировать массивы следующим образом:

@budget.each_index do |i|
  puts @budget[i]
  puts @actual[i]
end

Есть ли способ Ruby , чтобы сделать это лучше? Что-то вроде , как , это?

# Obviously doesn't achieve what I want it to - but is there something like this?
[@budget, @actual].each do |budget, actual|
  puts budget
  puts actual
end
123
задан nfm 26 August 2010 в 22:26
поделиться

2 ответа

>> @budget = [ 100, 150, 25, 105 ]
=> [100, 150, 25, 105]
>> @actual = [ 120, 100, 50, 100 ]
=> [120, 100, 50, 100]

>> @budget.zip @actual
=> [[100, 120], [150, 100], [25, 50], [105, 100]]

>> @budget.zip(@actual).each do |budget, actual|
?>   puts budget
>>   puts actual
>> end
100
120
150
100
25
50
105
100
=> [[100, 120], [150, 100], [25, 50], [105, 100]]
265
ответ дан 24 November 2019 в 01:11
поделиться

Используйте метод Array.zip и передайте ему блок для последовательного перебора соответствующих элементов.

21
ответ дан 24 November 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: