Изучив документацию по Ruby 1.9.3, и Array#<<, и Array#push были разработаны для реализации добавления элемента в конец текущего массива. Тем не менее, кажется, что между ними есть тонкие различия.
Я столкнулся с тем, что оператор * можно использовать для добавления содержимого всего другого массива к текущему, но только с #push.
a = [1,2,3]
b = [4,5,6]
a.push *b
=> [1,2,3,4,5,6]
Попытка использовать #<< вместо этого приводит к различным ошибкам, в зависимости от того, используется ли он с оператором точки и/или круглыми скобками.
Почему #<< не работает так же, как #push? Разве одно на самом деле не является псевдонимом для другого?