Ruby
備忘録
配列操作

【備忘録】配列に対して要素数を指定して代入した場合の挙動【Ruby】

はじめに

Rubyを勉強していて、気になった処理内容を実際に実行して、それを備忘録として作成した記事となっています。

概要

Rubyにおける、配列に対して文字の置き換えを要素数を指定して行った場合の挙動を、備忘録としてまとめています。

開発環境


・Rubyのバージョンは2.3.0
・Rubyのビルダのバージョン?(rbenv)は1.1.1-6
・virtual box にCentOS7をインストールし、実行

備忘録

Rubyの配列は、要素数を指定して値の代入をすることができます。例えば配列の2つ目の要素から4つ、値を変更する、という操作です。
以下はサンプルコードです。

b = [0 , 1,  2,  3,  4,  5,  6,  7,  8,  9,  10]
b[1,  4] = "a", "b", "c", "d"

配列に対して処理を行った結果は以下の通りです。

[0,  "a",  "b",  "c",  "d",  5,  6,  7,  8,  9,  10]

本題はここから。
この代入処理を以下のように、要素数と代入する値の個数が一致しない場合は、どうなるのか気になったので実行してみました。確認するパターンは以下の2つです。

処理内容と結果

1.パターン1
・配列: [0 , 1,  2,  3,  4,  5,  6,  7,  8,  9,  10]
・処理:b[1,  4] = "a"
・結果:[0 ,  "a",  5,  6,  7,  8,  9,  10]

2.パターン2
・配列: [0 , 1,  2,  3,  4,  5,  6,  7,  8,  9,  10]
・処理:b[1,  4] = "a", "b", "c", "d", "e"
・結果:[0,  "a",  "b",  "c",  "d",  "e",  5,  6,  7,  8,  9,  10]

1つ目の処理は、「置き換える要素数」 > 「代入する値の個数」の場合の処理です。この場合、「代入する値の個数」が3つ足りていないのでその分は配列から削除されています。

2つ目の処理は、「置き換える要素数」 < 「代入する値の個数」の場合の処理です。この場合、「代入する値の個数」が1つ多いのでその分は配列に追加されています。追加される位置は置き換えようとした範囲の末尾です。

ちなみにもちろん配列の長さも要素数に合わせて変化します。

まとめ

配列に対して要素数を指定して代入をする場合、要素数と比較して、
・値の個数が不足している場合は、その分削除
・値の個数が超過している場合は、その分挿入
という処理が行われるようです。