Ruby — разница между Array#<< и Array#push

Изучив документацию по 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? Разве одно на самом деле не является псевдонимом для другого?

49
задан RavensKrag 28 February 2015 в 11:54
поделиться