Menu
Coddy logo textTech

Case / Whenでの範囲

CoddyのRubyジャーニー「ロジックとフロー」セクションの一部。レッスン 8/56。

範囲は Ruby の case 文で力を発揮します。多くの言語では比較演算子を使った if/elsif の連鎖が必要ですが、Ruby では値を範囲と直接照合できます。

score = 78
grade = case score
        when 90..100 then "A"
        when 80..89  then "B"
        when 70..79  then "C"
        when 60..69  then "D"
        else              "F"
        end
puts grade  # C

内部では、when 70..79 は範囲の === 演算子を使用しており、これは (70..79).include?(score) と同等です。

case形式は、長いif/elsifの連鎖よりも短く、読みやすく、すばやく書けます。

challenge icon

チャレンジ

簡単

カンマ区切りの整数の年齢リストを読み取ります。各年齢を、rangesを使用したcase文で分類します。

  • 0..12: Child
  • 13..19: Teen
  • 20..64: Adult
  • 65以上: Senior
  • その他(負の値): skipped。reportには含めません

0ではない各カテゴリについて、次の固定順序で件数の行を出力します: ChildTeenAdultSenior。人数が0のカテゴリは省略します。件数の後に、Skipped: <n>を出力します。ここでnは負の値(無効な年齢)の件数です。

入力が5,15,30,70,-3,40,12の場合、出力は次のようになります。

Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1

自分で試してみよう

ages = gets.chomp.split(",").map(&:to_i)

# TODO: case + ranges で各年齢を分類し、カテゴリごとにカウントし、レポートを出力する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Rubyオンラインコンパイラ