配列やハッシュの要素数を取得したい
ユースケース:引数などの、要素がいくつあるかわからないケースで要素数だけカウントしたい場合?
答え
hoge.length のように、 lengthメソッドを使う。
サンプルコード
配列の中にハッシュを入れたり、ハッシュの要素に配列を入れたしたりしていますが、ネストした場合を再現するためです。
hs = { :id => 1 , :name => "hoge" }
ary = Array.new(2)
ary[0] = Array["1","one"]
ary[1] = Array["2","two"]
ary2 = Array.new(0)
ary2[0] = hs
hs2 = { :ary => ary , :ary2 => ary2 }
p hs
p hs.length
p ary
p ary.length
p hs2
p hs2.length
p ary2
p ary2.length
実行結果
上から順に、ハッシュ、配列をネストした配列、配列を値に持つハッシュ、ハッシュをネストした配列の、中身と要素数を表示しています。
配列の場合、外側の要素を返しています。
{:id=>1, :name=>"hoge"}
2
[["1", "one"], ["2", "two"]]
2
{:ary=>[["1", "one"], ["2", "two"]], :ary2=>[{:id=>1, :name=>"hoge"}]}
2
[{:id=>1, :name=>"hoge"}]
1