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 を使用してください)。
チャレンジ
初心者入力から1つの整数(摂氏温度)を読み取ります。範囲指定のケースを持つ単一の switch 文を使用して、以下のラベルのいずれかを出力してください:
0未満(負の数):freezing0...9:cold10...19:mild20...29:warm30...39:hot40以上: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文で判定し、一致するラベルをプリントする
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。