Петля цикла Ruby всегда пара
У меня есть следующий массив:
a = ['sda', 'sdb', 'sdc', 'sdd']
Теперь я хочу пропустить эти записи, но всегда с двумя элементами. Я делаю это следующим образом:
while b = a.shift(2)
# b is now ['sda', 'sdb'] or ['sdc', 'sdd']
end
Это как-то неправильно, есть ли лучший способ сделать это? Есть ли способ легко получить что-то вроде [['sda', 'sdb'], ['sdc', 'sdd']]
?
Я читал http://www.ruby-doc.org/core-1.9.3/Array.html, но я не нашел что-то полезное...
Ответы
Ответ 1
Возможно, вы захотите посмотреть Enumerable
, который включен в Array
.
Вы хотите Enumerable#each_slice
, который многократно дает из перечислимого количества заданных элементов (или меньше, если нет что многие в конце):
a = ['sda', 'sdb', 'sdc', 'sdd']
a.each_slice(2) do |b|
p b
end
Урожайность:
$ ruby slices.rb
["sda", "sdb"]
["sdc", "sdd"]
$