配列のサイズの取得とサイズの拡大
配列オブジェクトから要素の数を取得することができます。また作成済みの配列オブジェクトに対して要素数をあとから拡大することができます。ここでは Ruby で配列のサイズを取得する方法、および配列に新しい要素を追加してサイズを拡大する方法について解説します。
(Last modified: )
配列のサイズを取得する
作成された配列に含まれる要素数を取得する方法を確認します。 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 )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。