Один из способов сделать это - использовать функцию, подобную each
, и воспользоваться преимуществами автоматического разбиения массива в Ruby:
ary = [[1,2],[2,4],[3,6]]
a = []
b = []
ary.each{|first,second| a << first; b << second}
# The entry [1,2] is automatically split into first = 1 and second = 2
Если вы хотите, вы также можете написать это в одном вызове методаиспользование each_with_object
a,b = ary.each_with_object([[],[]]) do |(first, second), result|
result[0] << first
result[1] << second
}
Третий вариант будет использовать Array.zip
:
a,b = ary[0].zip(*ary[1..-1])
zip
объединяет массивы путем объединения записей с одинаковыми индексами (как выхочу сделать здесь).*
здесь является оператором splat, который разворачивает массив массивов в ряд аргументов.