kind=defined
names=[]=
visibility=public

--- []=(nth, val)

nth 番目の要素を val に設定します。nth が配列の範囲を越える時には配列の長さを自動的に拡張し、
拡張した領域を nil で初期化します。

@param nth インデックスを整数で指定します。

@param val 設定したい要素の値を指定します。

@raise IndexError 指定された nth が自身の始点よりも前を指している場合に発生します。

例:

  a = [0, 1, 2, 3, 4, 5]
  a[0] = "a"
  p a  #=> ["a", 1, 2, 3, 4, 5]
  a[10] = "x"
  p a  #=> ["a", 1, 2, 3, 4, 5, nil, nil, nil, nil, "x"]
 
  a = [0, 1, 2, 3, 4, 5]
  a[-100] = 1           #=> IndexError

--- []=(range, val)

[[c:Range]] オブジェクト range の範囲にある要素を配列 val の内容に置換します。
range の first が自身の末尾を越える時には配列の長さを自動的に拡張し、拡張した領域を nil で初期化します。

    ary = [0, 1, 2, 3, 4, 5]
    ary[0..2] = ["a", "b"]
    p ary  # => ["a", "b", 3, 4, 5]

    ary = [0, 1, 2]
    ary[5..6] = "x"
    p ary  # => [0, 1, 2, nil, nil, "x"]
    
    ary = [0, 1, 2, 3, 4, 5]
    ary[1..3] = "x"
    p ary  # => [0, "x", 4, 5]

@param range 設定したい配列の範囲を [[c:Range]] オブジェクトで指定します。
             range の first や end の値が負の時には末尾からのインデックスと見倣します。
             末尾の要素が -1 番目になります。
             range の first が end より後にある場合には first の直前に val を挿入します。
//emlist{
    ary = [0, 1, 2, 3, 4, 5]
    ary[2..0] = ["a", "b", "c"]
    p ary   # => [0, 1, "a", "b", "c", 2, 3, 4, 5]
//}

@param val range の範囲に設定したい要素を配列で指定します。
           val が配列でないときには val.to_ary もしくは [val] の内容で置換します。
           val の要素の数の方が range の長さより大きい時には、後ろの要素がずれます。
           val が nil か 空の配列 [] なら start から end までの要素が削除されます。
//emlist{
    ary = [0, 1, 2, 3, 4, 5]
    ary[2..4] = nil
    p ary   # => [0, 1, 5]
//}
@raise RangeError 指定された範囲の始点が自身の始点よりも前にある場合に発生します。

例:

  a = [0, 1, 2, 3, 4, 5]
  a[-10..10] = 1        #=> RangeError

--- []=(start, length, val)

インデックス start から length 個の要素を配列 val の内容で置き換えます。
start が自身の末尾を越える時には配列の長さを自動的に拡張し、拡張した領域を nil で初期化します。

  ary = [0, 1, 2, 3]
  ary[1, 2] = ["a", "b", "c", "d"]
  p ary                        #=> [0, "a", "b", "c", "d", 3]
  
  ary = [0, 1, 2]
  ary[5, 1] = "Z" 
  p ary                        #=> [0, 1, 2, nil, nil, "Z"]
    
  ary = [0, 1, 2, 3]
  ary[0, 10] = ["a"]
  p ary                        #=> ["a"]

@param start 置き換えたい範囲の先頭のインデックスを指定します。
             start の値が負の時には末尾からのインデックスと見倣します。末尾の要素が -1 番目になります。

@param length 置き換えたい要素の個数を指定します。
              length の値が 0 のときは start の直前に val を挿入します。
//emlist{
    ary = [0, 1, 2, 3]
    ary[1, 0] = ["inserted"]
    p ary                        # => [0, "inserted", 1, 2, 3]
//}

@param val 設定したい要素を配列で指定します。
           val が配列でないときには val.to_ary もしくは [val] の内容で置換します。
           val の長さが length と等しくない場合には、val の長さに合わせて要素が削除されたりずれたりします。
           val が nil か 空の配列 [] なら start から end までの要素が削除されます。
//emlist{
    a = [0, 1, 2, 3, 4, 5]
    a[2, 3] = nil
    p a   # => [0, 1, 5]
//}

@raise IndexError 指定された start が自身の始点よりも前を指している場合に発生します。


