Ranges in Switch
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 10 von 56.
Du hast switch mit Bereichen in den Grundlagen verwendet. Derselbe Trick lässt sich auf echte Klassifizierungsprobleme skalieren, bei denen jeder Fall einen Wertebereich abdeckt.
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")
}
// warmDer erste case ..<0 verwendet die einseitige Bereichsform: „jeder Wert, der strikt kleiner als 0 ist“. Sie können auch 0... verwenden, um „0 oder größer“ auszudrücken.
Die Fälle werden von oben nach unten geprüft und der erste Treffer gewinnt. Ordnen Sie sie daher von niedrig nach hoch (oder verwenden Sie default für den Catch-all).
Aufgabe
AnfängerLies eine einzelne Ganzzahl von der Eingabe: eine Temperatur in Celsius. Gib eine dieser Bezeichnungen unter Verwendung eines einzelnen switch mit Bereichs-Cases aus:
- Unter
0(negative Zahlen):freezing 0...9:cold10...19:mild20...29:warm30...39:hot40und darüber:scorching
Für die Eingabe 22 ist die Ausgabe warm.
Spickzettel
Verwenden Sie switch mit Bereichs-Cases (range cases), um Werte zu klassifizieren. Die Cases werden von oben nach unten geprüft; die erste Übereinstimmung gewinnt.
let temp = 22
switch temp {
case ..<0: print("freezing") // einseitig: alles unter 0
case 0..<10: print("cold")
case 10..<20: print("mild")
case 20..<30: print("warm")
default: print("hot") // Auffangwert (catch-all)
}
// warm..<0— einseitiger Bereich: jeder Wert, der strikt kleiner als 0 ist40...— einseitiger Bereich: 40 oder größer- Ordnen Sie die Cases von niedrig nach hoch; verwenden Sie
defaultfür den verbleibenden Auffangwert
Probier es selbst
let temp = Int(readLine()!)!
// TODO: switch auf temp mit Bereichen anwenden, das entsprechende Label ausgeben
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Kontrollfluss
1Strings im Detail
Zählen und IndizesGroß-/Kleinschreibung und TrimmenSuchen in StringsTeilen und ZusammenfügenTeilstrings ersetzenWiederholung – Benutzernamen-Check4Mengen
Mengen erstellenVereinigung und SchnittmengeDifferenz und symmetrische DifferenzTeilmenge und ObermengeRückblick – Tag-Filter7Projekt - Habit Tracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteRange-MethodenRanges in SwitchRückblick – Kalender-Grid5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerkettung von map, filter, reduceRückblick – Wortstatistiken