Rubyリファレンス: Home

[]= (Array)

Edit   History

標準クラス・モジュール > Array > []=

[]=メソッドは、array[index] = objのように記述することで、[]内で指定した位置の要素を右辺で置き換えます。arrayがレシーバで、[]内のindexと右辺のobjが引数です。レシーバ自身を変更するメソッドです。戻り値は常に右辺のobjです。

[]メソッドと同じく、[]内の引数には整数(位置)、整数2つ(位置と数)、範囲を指定できます。

位置

array[index] = obj

[]内の引数に整数1つ(index)を指定したときは、その位置の要素を右辺objで置き換えます。(0が1番目、1が2番目、...)。

indexにマイナスの値を指定したときは、配列の末尾から数えます(-1が後ろから1番目、-2が後ろから2番目、...)。

animals = ["mouse", "cow", "tiger", "rabbit", "dragon"]
animals[1] = "buffalo"  # 2番目
animals[-3] = "lion"    # 末尾から3番目
p animals
["mouse", "buffalo", "lion", "rabbit", "dragon"]

indexに範囲外の位置を指定してもエラーにはならず、配列のサイズを拡張します。右辺objを指定した位置に入れ、間はnilで埋めます。ただし、indexにマイナスの値で範囲外の位置を指定すると例外IndexErrorが発生します。

animals = ["mouse", "cow", "tiger", "rabbit", "dragon"]
animals[7] = "goat"     # 範囲外
p animals
["mouse", "cow", "tiger", "rabbit", "dragon", nil, nil, "goat"]

位置と数

array[index, length] = other_array

引数に整数2つ(indexlength)を指定したときは、indexの位置からlength個の要素を右辺の配列other_arrayの要素で置き換えます。右辺が配列でないときは、右辺を1つの要素として置き換えます。

indexに範囲外の位置を指定してもエラーにはならず、配列のサイズを拡張します。indexにマイナスの値で範囲外の位置を指定すると例外IndexErrorが発生します。

animals = ["mouse", "cow", "tiger", "rabbit", "dragon"]
animals[0, 2] = ["rat", "buffalo", "lion"]   # 1番目から3個
p animals
["rat", "buffalo", "lion", "rabbit", "dragon"]

lengthと右辺の要素の数が異なるときは、配列サイズを拡張または縮小します。

animals = ["mouse", "cow", "tiger", "rabbit", "dragon"]
animals[-4, 3] = "cat"   # 末尾から4番目から3個
p animals
["mouse", "cat", "dragon"]

lengthが0のときは、置き換えを行わず、indexの位置に要素を挿入します。

animals = ["mouse", "cow", "tiger", "rabbit", "dragon"]
animals[1, 0] = ["cat", "dog"]  # 2番目に挿入
p animals
["mouse", "cat", "dog", "cow", "tiger", "rabbit", "dragon"]

範囲

array[range] = other_array

引数に範囲rangeを指定すると、その範囲の要素を右辺の配列other_arrayの要素で置き換えます。右辺が配列でないときは、右辺を1つの要素として置き換えます。

rangeが配列の範囲外のときは、配列のサイズを拡張します。範囲の開始位置がマイナスの値で範囲外のときは、例外RangeErrorが発生します。

範囲に含まれる要素の数と右辺の要素の数が異なるときは、配列サイズを拡張または縮小します。

animals = ["mouse", "cow", "tiger", "rabbit", "dragon"]
animals[1..3] = ["buffalo", "lion", "bat"]   # 1番目から4番目
p animals
["mouse", "buffalo", "lion", "bat", "dragon"]

関連項目