names=shift
visibility=public
kind=defined

--- shift -> object | nil
--- shift(n) -> Array

配列の先頭の要素を取り除いてそれを返します。
引数を指定した場合はその個数だけ取り除き、それを配列で返します。

空配列の場合、n が指定されていない場合は nil を、
指定されている場合は空配列を返します。
また、n が自身の要素数より少ない場合はその要素数の配列を
返します。どちらの場合も自身は空配列となります。

返す値と副作用の両方を利用して、個数を指定して配列を 2 分する簡単な方法として使えます。

@param n 自身から取り除きたい要素の個数を非負整数で指定します。
         整数以外のオブジェクトを指定した場合は to_int メソッドによる暗
         黙の型変換を試みます。
@raise TypeError 引数に整数以外の(暗黙の型変換が行えない)オブジェクトを
                 指定した場合に発生します。

@raise ArgumentError 引数に負の数を指定した場合に発生します。



例:

  a = [0, 1, 2, 3, 4]
  p a.shift            #=> 0
  p a                  #=> [1, 2, 3, 4]

  p [].shift           #=> nil
  p [].shift(1)        #=> []

@see [[m:Array#push]], [[m:Array#pop]], [[m:Array#unshift]]

