Ruby: как объединить массив массивов в один
У меня есть массив массивов в Ruby on Rails (3.1), где все внутренние массивы имеют разный размер. Есть ли способ легко объединить все внутренние массивы, чтобы получить один большой одномерный массив со всеми элементами?
Я знаю, что вы можете использовать функцию Array:: concat для объединения двух массивов, и я мог бы сделать цикл для их последовательного объединения следующим образом:
concatenated = Array.new
array_of_arrays.each do |array|
concatenated.concat(array)
end
но я хотел бы знать, если бы был как Рубин один лайнер, который будет делать это в чистом виде манера.
Спасибо за вашу помощь.
3 ответа:
вы ищете
#flatten
:concatenated = array_of_arrays.flatten
по умолчанию это будет сглаживать списки рекурсивно.
#flatten
принимает необязательный аргумент для ограничения глубины рекурсии-в документации перечислены примеры, иллюстрирующие разницу.