По сути, вопрос заключается в том, «как объединить массивы в Ruby». Естественно, ответ заключается в использовании concat
или+
как упоминалось почти в каждом ответе.
Естественным продолжением вопроса будет «как выполнить построчную конкатенацию двумерных массивов в Ruby». Когда я гуглил «матрицы конкатенации рубина», этот SO вопрос был главным результатом, поэтому я решил оставить свой ответ на этот (не заданный, но связанный) вопрос здесь для потомков.
В некоторых приложениях вам может потребоваться «объединить» два 2D-массива по строкам. Что-то вроде,
[[a, b], | [[x], [[a, b, x],
[c, d]] | [y]] => [c, d, y]]
Это что-то вроде «увеличения» матрицы. Например, я использовал эту технику, чтобы создать одну матрицу смежности для представления графа из множества меньших матриц. Без этой техники мне пришлось бы перебирать компоненты таким образом, чтобы это могло привести к ошибкам или разочарованию. Я мог бы сделать each_with_index
, например. Вместо этого я объединил zip и flatten следующим образом,
# given two multi-dimensional arrays that you want to concatenate row-wise
m1 = [[:a, :b], [:c, :d]]
m2 = [[:x], [:y]]
m1m2 = m1.zip(m2).map(&:flatten)
# => [[:a, :b, :x], [:c, :d, :y]]