こんにちは! エンジニアのヤマギシです。
今回はRubyのcountについてわかりやすく解説していこうと思います。
こちらの記事では、
count(Array)の使い方
count(String)の使い方
count(Enumerable)の使い方
を通常の使い方ならびにブロックに渡す使い方に分けて解説していこうと思います。
それぞれの解説に入る前に、前提知識としてcountの説明を軽くしておきます。
countメソッドとは、変数に格納されている文字数の中で特定の文字の個数を数えてくれる便利なメソッドです。
実際の使い方などは次の章より順次、説明していくので、しっかり理解していきましょう!
count(Array)の使い方
まず、配列変数に格納されている要素数を数えてくれる方法について見ていきましょう!
Array、つまり配列でcountメソッドを使う型は以下のとおりです。
配列変数.count(引数)
引数の部分に対象の要素を指定してあげます。
こちらを踏まえて、実際のサンプル文を見ていきましょう!
nums = [1022, 77, 55, 77, 11, 77, 0, 2, 1022, 030] puts nums.count(1022)
[実行結果]
2
まず、配列の各要素をnumsへそれぞれ格納しています。
続いて、countメソッドで引数(1022)を指定してあげることで、
引数で指定したnumsの要素数が出力できました。
ブロックを用いたcountメソッド
配列でのcountメソッドでは、ブロックを使うことにより、条件を加えて結果を返す用法もあります。
要するに、ブロック内処理での返り値が真のものを返してくれます。
要素を2で割った余りが1の数を出力してみましょう!
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] puts nums.count {|n| n % 2 == 1}
[実行結果]
5
要素を2で割った余りが1の数がブロックの中で指定されているので結果として『5』が出力されます。
ちなみに、『%』は割ったときの余りを返す演算子なので覚えておきましょう!
count(String)の使い方
次に、Stringでのcountのメソッドを使う方法をご紹介します。
まずはじめに、Stringで数えてくれるのは変数の文字数なのです。
引数である特定の文字を指定してあげることで、指定した文字の個数を返してくれます。
Stringでcountメソッドを使う型は以下のとおりです。
変数.count(引数)
こちらを踏まえて、実際のサンプル文を見ていきましょう!
string = "carry" puts string.count("r")
[実行結果]
2
変数『carry』において、countメソッドで引数で『r』を指定したことで、
引数『r』での個数を返してくれています。
count(Enumerable)の使い方
Enumerableでは、本来ブロックでしか使わないので、ブロックについてのみ説明していきます。
こちらでも、countメソッドで使う型を押さえておきましょう。
配列変数.each_with_index {|ブロック引数, n| 実行処理}
処理の流れとしては、配列変数に格納してある要素をそれぞれ出力し左から順に0から番号を付けていきます。
番号を付ける役割を担っているのが、『n』と記載してある箇所です。
こちらは別に『n』でなくてもなんでも構いません。
つまり配列要素の数だけブロック引数に受け渡し繰り返し実行していきます。
currency = ["USD/JPY", "EUR/USD", "GBP/USD"] currency.each_with_index {|curr, p| puts "#{p+1}番目のお気に入りは #{curr}" }
[実行結果]
1番目のお気に入りは USD/JPY 2番目のお気に入りは EUR/USD 3番目のお気に入りは GBP/USD
繰り返しごとにブロック引数『curr』には配列変数に格納されている各要素が入り、『p』には0、1、2、…と番号が入ります。
この時、注意しなければならないのは1からではなく0からはじまるということ。
なので、putsメソッドの式展開でpを1から表示するようにしています。
まとめ
さぁ、いかがでしたでしょうか。
今回はRubyにおける
配列の要素数
文字列の数
に加え
条件を指定することで返す文字数を変える
などといった応用的な分野についても学んできました。
countの使い方について、この記事を繰り返し読んで復習していきましょう!