配列内にある値について、偶数もしくは奇数の数のカウントをするメソッドを作成します。
値が偶数の場合はeven?メソッドを使用し、奇数の場合はodd?メソッドを使用します。
※以下は偶数パターンのみ記載しています。evenをoddに変換することで奇数のカウントに使用できます。
使用例
number = 2
number.even?
// →trueが返却される
解答例
def count(number)
count = 0
number.each do |num|
if num.even?
count += 1
end
end
puts count
end
解説
今回はメソッド作成のため、まず一行目にメソッド名と仮引数のnumberを記述しています。
def count(number)
上述の通りeven?メソッドはtrueもしくはfalseのみ返却するため単体ではカウントできません。
そのため以下のように配列に対してeven?メソッドを使用するとエラーが発生します。
失敗例
hairetsu = [1,2,6,8,10]
hairetsu.even?
// NoMethodError (undefined method `even?' for [1, 2, 6, 8, 10]:Array)
なお、二行目でcount = oと記載していますが、繰り返し処理の前に記載することでカウントの初期化をしています。
カウントするためにはeachメソッドによる繰り返し処理で行います。
流れとしてはtrueだった場合にはカウントアップし、falseの場合は何もせず次の要素の判定に進む、といったものです。
number.each do |num|
if num.even?
count += 1
end
end
最後にカウントしたものを出力するためにputsメソッドを使用しています。
puts "count"
これで汎用的な配列内の偶数or奇数のカウントメソッドを作成することができました。
メソッドを呼び出す際はメソッド外から実引数に配列を指定してコールすることをお忘れなく。