配列の要素数を返り値にもつメソッドは幾つかありますが、違いってなんでしょうか?使い分けはどのようにしたらいいのでしょうか?
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
解説
- 配列内の要素を一つ取り出す
-
| |
内の変数に代入する -
処理
を行う - 手順2と3を配列の要素がなくなるまで繰り返す
- 手順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 |
---|---|---|---|
配列/ハッシュ | ◯ | ◯ | ◯ |
引数もつ | ◯ | × | × |
引数ない | 要素数を返す | 要素数を返す | 要素数を返す |
引数あり | 引数と一致する要素の数える | × | × |
ブロックもつ | ◯ | × | × |
ブロックあり | ブロック内の処理の返り値が真のものを数える | × | × |