title: Ruby - Difference between Array#<< and Array#push
body: <p>From examining the documentation for Ruby 1.9.3, both <code>Array#&lt;&lt;</code> and <code>Array#push</code> were designed to implement appending an element to the end of the current array.  However, there seem to be subtle differences between the two.</p>
  <p>The one I have encountered is that the <code>*</code> operator can be used to append the contents of an entire other array to the current one, but only with <code>#push</code>.</p>
  <pre><code>a = [1,2,3]
  b = [4,5,6]
  
  a.push *b
  =&gt; [1,2,3,4,5,6]
  </code></pre>
  <p>Attempting to use <code>#&lt;&lt;</code> instead gives various errors, depending on whether it's used with the dot operator and/or parentheses.</p>
  <p>Why does <code>#&lt;&lt;</code> not work the same way <code>#push</code> does? Is one not actually an alias for the other?</p>