kind=defined
names=slice!
visibility=public

--- slice!(nth)       -> object | nil

指定した要素を自身から取り除き、取り除いた要素を返します。取り除く要素がなければ nil
を返します。

@param nth 取り除く要素のインデックスを整数で指定します。[[m:Array#[] ]] と同じです。

例:

   a = [ "a", "b", "c" ]
   a.slice!(1)     #=> "b"
   a               #=> ["a", "c"]
   a.slice!(-1)    #=> "c"
   a               #=> ["a"]
   a.slice!(100)   #=> nil
   a               #=> ["a"]

--- slice!(start, len)  -> Array | nil
--- slice!(range)     -> Array | nil

指定した部分配列を自身から取り除き、取り除いた部分配列を返します。取り除く要素がなければ nil
を返します。

以下のコードと同値です。

     def slice!(*args)
        result = self[*args]
        self[*args] = nil
        result
     end

ですので以下のように配列の長さが拡張される場合もありえます。

  a = [ "a", "b", "c" ]
  p a.slice!(5, 1)       #=> nil
  p a                    #=> ["a", "b", "c", nil, nil]

@param start 削除したい部分配列の先頭のインデックスを整数で指定します。[[m:Array#[] ]] と同じです。

@param len 削除したい部分配列の長さを整数で指定します。[[m:Array#[] ]] と同じです。

@param range 削除したい配列の範囲を [[c:Range]] オブジェクトで指定します。[[m:Array#[] ]] と同じです。

@raise IndexError 指定された範囲の始点が自身の始点より前にある場合に発生します。

例:

   a = [ "a", "b", "c" ]
   a.slice!(1, 2)     #=> ["b", "c"]
   a                  #=> ["a"]
   
   a = [ "a", "b", "c" ]
   a.slice!(1, 0)     #=> []
   a                  #=> [ "a", "b", "c" ]
 
   a = [ "a", "b", "c" ]
   a.slice!(-10, 1)   #=> IndexError

