У вас есть работоспособная идея, но #flatten!
находится не в том месте - он выравнивает свой приемник, так что вы можете использовать его, чтобы превратить [1, 2, ['foo', 'bar']]
в [1,2,'foo','bar']
.
Я, несомненно, забыл некоторые подходы, но вы можете объединить :
a1.concat a2
a1 + a2 # creates a new array, as does a1 += a2
или prepend / append :
a1.push(*a2) # note the asterisk
a2.unshift(*a1) # note the asterisk, and that a2 is the receiver
или сращивание :
a1[a1.length, 0] = a2
a1[a1.length..0] = a2
a1.insert(a1.length, *a2)
или добавление и выравнивание :
(a1 << a2).flatten! # a call to #flatten instead would return a new array