Ruby

count, length, sizeメソッドの違いと特徴を比較

More than 3 years have passed since last update.

配列の要素数を返り値にもつメソッドは幾つかありますが、違いってなんでしょうか?使い分けはどのようにしたらいいのでしょうか?


countメソッド


構文1

array.count(obj)

解説

引数objと同じ要素の数を返します。引数を省略した場合は単に、配列の要素数を返します。


sample.rb

ary = [2, 4, 5, 9, 2, 2, 4, 1]

# 配列内の整数 2 の数を表示
ary.count(2)
=> 3
# 配列内の整数 3 の数を表示
ary.count(3)
=> 0
# 配列内の要素数を表示
ary.count
=> 8


構文2

array.count do |変数|

処理
end

解説


  1. 配列内の要素を一つ取り出す


  2. | |内の変数に代入する


  3. 処理を行う

  4. 手順2と3を配列の要素がなくなるまで繰り返す

  5. 手順3で行った処理の返り値が真になった回数を最終的に返す


sample.rb

ary = [1,2,3,4,5]

ary.count do |num|
num % 2 == 0 # 各要素が2で割り切れたら、つまり偶数なら「真」を返す
end
=> 2 # 偶数の数を返す


lengthメソッド, sizeメソッド


構文

array.length

array.size

解説

これらのメソッドは単に配列の要素数を返す


sample.rb

ary = [2,3,"takashi", {title: "ときかけ", genre: "青春"}, [3,4,5]]

ary.length
=> 5 # 配列aryの要素数
ary.size
=> 5 # 配列aryの要素数


ハッシュにcountメソッド, sizeメソッド, lengthメソッドを使う


sample.rb

hash = {title: "ときかけ", genre: "青春"}

hash.count
=> 2
hash.size
=> 2
hash.length
=> 2

解説

これらのメソッドはハッシュにも使用することができる。

使用するハッシュの中のキーとバリューのセットの数を返す。


まとめ

項目
count
size
length

配列/ハッシュ


引数もつ

×
×

引数ない
要素数を返す
要素数を返す
要素数を返す

引数あり
引数と一致する要素の数える
×
×

ブロックもつ

×
×

ブロックあり
ブロック内の処理の返り値が真のものを数える
×
×