Взгляните на Array#<<
и Array#push
.
Array#<<
берет тот, который добавляется на место к данному массиву.Например:
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array << 'd' # => ["a", "b", "c", "d"]
однако, если вы передадите массив, вы будете удивлены результатом
irb> array << ['e', 'f', 'g'] # => ["a", "b", "c", "d", ["e", "f", "g"]]
Array#push
может обрабатывать 1+ объектов, каждый из которыхдобавлен к массиву.
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array.push 'd' # => ["a", "b", "c", "d"]
Однако, вызов #push
с массивом дает тот же результат, что и #<<
.
irb> array.push ['e', 'f', 'g'] # => ["a", "b", "c", "d", ["e", "f", "g"]]
Для того, чтобы выдвинуть все элементыв массиве просто добавьте *
перед вторым массивом.
irb> array.push *['e', 'f', 'g'] # => ["a", "b", "c", "d", "e", "f", "g"]
В связанной заметке, хотя Array#+
объединяет массивы, она также допускает дублирование значений.
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array += ['d'] # => ["a", "b", "c", "d"]
irb> array += ['d'] # => ["a", "b", "c", "d", "d"]
Если это нежелательно, оператор |
вернет объединение двух массивов без повторяющихся значений.
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array |= ['d'] # => ["a", "b", "c", "d"]
irb> array |= ['d'] # => ["a", "b", "c", "d"]