配列にある値の中から偶数の数をカウントして出力するメソッドを作る。
例
count_evens([2, 1, 2, 3, 4]) → 3
count_evens([2, 2, 0]) → 3
count_evens([1, 3, 5]) → 0
答えと解説
def count_evens(nums)
count = 0
nums.each do |num|
if num.even?
count += 1
end
end
puts count
end
変数countを用意 → 理由 配列の中の偶数の数を出力するためにカウントした数を保持するための変数が必要だから
count_evens で count=0 と記述するとループ処理となり、処理が繰り返されるたびにcount=0が実行されるのでcountの値が0に上書きされてしまう。
よってcountの定義はeach文のループ処理外で行う。
配列に入っている数字をeach文で取り出し、even?メソッドで一つずつ偶数かどうかを確認し、偶数だった場合はcountに1を足す
countに1を追加するための記述はcount = count + 1でも可能だが、自己代入演算子を使用するとシンプルに記述できるため
each文の処理が終了し、countに代入された最終的な数が偶数の数となる。