A questão, essencialmente, é "como concatenar matrizes em Ruby". Naturalmente, a resposta é usar concat
ou +
como mencionado em quase todas as respostas.
Uma extensão natural para a pergunta seria "como executar concatenação em linha de matrizes 2D em Ruby". Quando pesquisei "matrizes de concatenação de rubi" no Google, essa pergunta do SO foi o principal resultado, então pensei em deixar minha resposta para essa pergunta (não solicitada, mas relacionada) aqui para a posteridade.
Em alguns aplicativos, convém concatenar duas matrizes 2D em linhas. Algo como,
[[a, b], | [[x], [[a, b, x],
[c, d]] | [y]] => [c, d, y]]
Isso é algo como "aumentar" uma matriz. Por exemplo, usei essa técnica para criar uma única matriz de adjacência para representar um gráfico de várias matrizes menores. Sem essa técnica, eu teria que percorrer os componentes de uma maneira que poderia ter sido propensa a erros ou frustrante de se pensar. Eu poderia ter que fazer um each_with_index
, por exemplo. Em vez disso, combinei o zíper e o achatamento da seguinte maneira:
# 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]]