0
0

More than 1 year has passed since last update.

Rubyの配列の要素を変更するメソッド

Posted at

配列の要素を変更するメソッド

配列の要素を変更するメソッド3つ紹介する

[]=
fill
replace

[]=メソッド

指定したインデックスの値を書き換える。インデックスが配列の範囲を越える時には、配列の長さが自動的に伸長され、伸長された領域は nil で初期化される。
インデックスに Range オブジェクトを指定すると、その範囲にある要素を置換する。
また [start, length] = と指定すると、インデックス start から length 個の要素を書き換える。

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

ary[9] = 10
p ary # => ["a", 2, 3, 4, 5, nil, nil, nil, nil, 10]

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

ary[5, 4] = [6, 7, 8, 9]
p ary # => ["a", "b", "c", "d", 5, 6, 7, 8, 9, 10]

fillメソッド

配列のすべての要素をしていしたオブジェクトに置き換える。
引数を2つ以上与えた場合、始点と終点やRangeオブジェクトを与えることで、該当する部分のみ変更される。
引数の代わりにブロックを指定すると、ブロックの評価結果で要素を変更する。

ary = [1, 2, 3, 4, 5]
ary.fill("a")
p ary # => ["a", "a", "a", "a", "a"]

ary[0].upcase!
p a # => ["A", "A", "A", "A", "A"]

ary.fill("b", 2..4)
p ary # => ["A", "A", "b", "b", "b"]

ary.fill { |index| index * 2 }
p ary # => [0, 2, 4, 6, 8]

replaceメソッド

引数で指定された配列で自身を置き換える。
= の再代入とは異なり、object_id は変化しない。

ary = [1, 2, 3]
p ary.object_id # => 260

ary = [4, 5, 6]
p ary.object_id # => 280

ary.replace([7, 8, 9])
p ary # => [7, 8, 9]
p ary.object_id # => 280 
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0