配列のサイズの取得とサイズの拡大

配列オブジェクトから要素の数を取得することができます。また作成済みの配列オブジェクトに対して要素数をあとから拡大することができます。ここでは Ruby で配列のサイズを取得する方法、および配列に新しい要素を追加してサイズを拡大する方法について解説します。

(2021 年 06 月 30 日公開 / 2022 年 10 月 12 日更新)

配列のサイズを取得する

作成された配列に含まれる要素数を取得する方法を確認します。 Array クラスで用意されている length メソッドを使います。

配列オブジェクト.length

配列に含まれる要素の数(最後の要素のインデックス + 1 )を返します。また length メソッドの別名である size メソッドも同じです。

具体的には次のように記述します。

ary = Array["赤", "青", "緑"]
puts(ary.length)

配列には 3 つの要素が含まれていますので、画面には「3」が出力されます。

またオブジェクトが代入されていない要素( nil が代入されている要素)は除外する場合、以前は nitems メソッドがあったのですが現在廃止になっているため count メソッドを使って次のように取得されてください。

ary = Array["赤", nil, "緑"]
puts(ary.length)
puts(ary.count {|item| !item.nil?})

length メソッドは「3」を返しますが、 count {|item| !item.nil?} は「2」を返します。

配列のサイズを拡大する

配列オブジェクトで使われている最大のインデックスよりも大きな数を指定して要素を指定しオブジェクトを代入した場合、配列のサイズは自動的に拡張されます。

ary = Array["赤", "青", "緑"]
ary[3] = "黄"

配列オブジェクトを作成した時は 3 つの要素を持っていますが、インデックスに「3」の要素に対してオブジェクトを代入すると、要素数は自動的に拡張されて 4 つの要素を持つ配列になります。

配列のサイズを拡大する場合、インデックスは(最大のインデックス + 1)である必要はありません。

ary = Array["赤", "青", "緑"]
ary[5] = "黄"

上記の場合はインデックスが「5」の要素にオブジェクトを代入しています。この時配列は「赤」「青」「緑」「nil」「nil」「黄」と言う5つの要素を持つ配列となります。オブジェクトが代入されていない要素は nil オブジェクトが代入されたものとして扱われます。

サンプルコード

では簡単なプログラムで確認してみます。

# encoding: UTF-8

ary = Array["red", "blue", "green"]
p(ary)
puts("length=" + ary.length.to_s)
puts("length(not nil)=" + ary.count {|item| !item.nil?}.to_s)

puts()

ary[5] = "white"
p(ary)
puts("length=" + ary.length.to_s)
puts("length(not nil)=" + ary.count {|item| !item.nil?}.to_s)

下記のように実行して下さい。

配列のサイズの取得と変更

-- --

Ruby で配列のサイズを取得する方法、および配列に新しい要素を追加してサイズを拡大する方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。