Menu
Coddy logo textTech

Switch文でのRange

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

基礎編で、範囲を指定した switch 文を使用しました。同じ手法は、各ケースが一連の値をカバーするような、実際の分類問題にも応用できます。

let temp = 22
switch temp {
case ..<0:        print("freezing")
case 0..<10:      print("cold")
case 10..<20:     print("mild")
case 20..<30:     print("warm")
default:           print("hot")
}
// warm

最初の case ..<0 は、片側範囲形式(「0未満の任意の値」)を使用しています。また、0... を使用して「0以上」を意味することもできます。

ケースは上から順にチェックされ、最初に一致したものが適用されます。そのため、低い方から高い方の順に並べてください(または、すべてに該当するものとして default を使用してください)。

challenge icon

チャレンジ

初心者

入力から1つの整数(摂氏温度)を読み取ります。範囲指定のケースを持つ単一の switch 文を使用して、以下のラベルのいずれかを出力してください:

  • 0 未満(負の数):freezing
  • 0...9cold
  • 10...19mild
  • 20...29warm
  • 30...39hot
  • 40 以上:scorching

入力が 22 の場合、出力は warm になります。

チートシート

値を分類するために、範囲指定のケース(range cases)で switch を使用します。ケースは上から順にチェックされ、最初に一致したものが適用されます。

let temp = 22
switch temp {
case ..<0:        print("freezing")   // 片側範囲:0未満のすべて
case 0..<10:      print("cold")
case 10..<20:     print("mild")
case 20..<30:     print("warm")
default:          print("hot")        // その他すべて(キャッチオール)
}
// warm
  • ..<0 — 片側範囲:0より小さいすべての値
  • 40... — 片側範囲:40以上の値
  • ケースを低い方から高い方へと順に並べ、残りのすべてを処理するために default を使用します

自分で試してみよう

let temp = Int(readLine()!)!

// TODO: 範囲を使用してtempをswitch文で判定し、一致するラベルをプリントする
quiz icon腕試し

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

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