Ruby 3.2.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Arrayクラス > []=

instance method Array#[]=

self[nth] = val[permalink][rdoc]

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

[PARAM] nth:
インデックスを整数で指定します。整数以外のオブジェクトを指定した場合は to_int メソッドによる暗黙の型変換を試みます。
[PARAM] val:
設定したい要素の値を指定します。
[EXCEPTION] TypeError:
引数 nth に整数以外の(暗黙の型変換が行えない)オブジェクトを指定した場合に発生します。
[EXCEPTION] 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
self[range] = val[permalink][rdoc]

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:
設定したい配列の範囲を Range オブジェクトで指定します。 range の first や end の値が負の時には末尾からのインデックスと見倣します。末尾の要素が -1 番目になります。 range の first が end より後にある場合には first の直前に val を挿入します。


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 の範囲に設定したい要素を配列で指定します。配列以外のオブジェクトを指定した場合は to_ary メソッドによる暗黙の型変換を試みます。to_ary メソッドに応答できない場合は [val] を用います。 val の要素の数の方が range の長さより大きい時には、後ろの要素がずれます。 val が空の配列 [] なら start から end までの要素が削除されます。


ary = [0, 1, 2, 3, 4, 5]
ary[2..4] = []
p ary   # => [0, 1, 5]
[EXCEPTION] RangeError:
指定された範囲の始点が自身の始点よりも前にある場合に発生します。


a = [0, 1, 2, 3, 4, 5]
a[-10..10] = 1        #=> RangeError
self[start, length] = val[permalink][rdoc]

インデックス 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 番目になります。整数以外のオブジェクトを指定した場合は to_int メソッドによる暗黙の型変換を試みます。
[PARAM] length:
置き換えたい要素の個数を指定します。 length の値が 0 のときは start の直前に val を挿入します。整数以外のオブジェクトを指定した場合は to_int メソッドによる暗黙の型変換を試みます。


ary = [0, 1, 2, 3]
ary[1, 0] = ["inserted"]
p ary                        # => [0, "inserted", 1, 2, 3]
[PARAM] val:
設定したい要素を配列で指定します。配列以外のオブジェクトを指定した場合は to_ary メソッドによる暗黙の型変換を試みます。to_ary メソッドに応答できない場合は [val] を用います。 val の長さが length と等しくない場合には、val の長さに合わせて要素が削除されたりずれたりします。 val が空の配列 [] なら start から end までの要素が削除されます。


a = [0, 1, 2, 3, 4, 5]
a[2, 3] = []
p a   # => [0, 1, 5]
[EXCEPTION] TypeError:
引数 start、length に整数以外の(暗黙の型変換が行えない)オブジェクトを指定した場合に発生します。
[EXCEPTION] TypeError:
引数 val に配列以外の(暗黙の型変換が行えない)オブジェクトを指定した場合に発生します。
[EXCEPTION] IndexError:
引数 start が自身の始点よりも前を指している場合に発生します。
[EXCEPTION] IndexError:
引数 length に負の数を指定した場合に発生します。