Ruby

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

More than 1 year has 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
配列/ハッシュ
引数もつ × ×
引数ない 要素数を返す 要素数を返す 要素数を返す
引数あり 引数と一致する要素の数える × ×
ブロックもつ × ×
ブロックあり ブロック内の処理の返り値が真のものを数える × ×