LoginSignup
71
58

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-08-11

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
71
58