Câu hỏi, về cơ bản, là "làm thế nào để ghép các mảng trong Ruby". Đương nhiên câu trả lời là sử dụng concat
hoặc+
như đã đề cập trong gần như mọi câu trả lời.
Một phần mở rộng tự nhiên cho câu hỏi sẽ là "làm thế nào để thực hiện nối hàng khôn ngoan các mảng 2D trong Ruby". Khi tôi googled "ma trận kết hợp ruby", câu hỏi SO này là kết quả hàng đầu vì vậy tôi nghĩ rằng tôi sẽ để lại câu trả lời của mình cho câu hỏi đó (không được nêu nhưng có liên quan) ở đây cho hậu thế.
Trong một số ứng dụng, bạn có thể muốn "nối" hai mảng 2D theo hàng. Cái gì đó như,
[[a, b], | [[x], [[a, b, x],
[c, d]] | [y]] => [c, d, y]]
Đây là một cái gì đó giống như "tăng cường" một ma trận. Ví dụ, tôi đã sử dụng kỹ thuật này để tạo một ma trận kề, để biểu diễn một đồ thị trong một loạt các ma trận nhỏ hơn. Nếu không có kỹ thuật này, tôi sẽ phải lặp đi lặp lại các thành phần theo cách có thể dễ bị lỗi hoặc bực bội khi nghĩ về. Tôi có thể đã phải làm một each_with_index
ví dụ. Thay vào đó tôi kết hợp zip và làm phẳng như sau,
# 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]]