Ruby - Diferencia entre Array # << y Array # push
Desde el examen de la documentación de Ruby 1.9.3, tanto Array # << como Array # push fueron diseñados para implementarse agregando un elemento al final de la matriz actual. Sin embargo, parece haber diferencias sutiles entre los dos.
El que encontré es que el operador * se puede usar para agregar el contenido de otra matriz a la actual, pero solo con #push.
a = [1,2,3]
b = [4,5,6]
a.push *b
=> [1,2,3,4,5,6]
Intentar usar # << en cambio da varios errores, dependiendo de si se usa con el operador de punto y / o paréntesis.
¿Por qué # << no funciona de la misma manera que #push? ¿Uno no es realmente un alias para el otro?