In diesem Artikel erfahren Sie, wie Sie mithilfe von switch-Steueranweisungen den Ablauf der Programmausführung steuern.
Die switch-Anweisung ist auch eine Vielzahl von Swift-Steueranweisungen egif-else, guard usw., die unterschiedliche Aktionen basierend auf unterschiedlichen Bedingungen ausführen.
Das Schöne an der switch-Anweisung ist, dass sie einen Wert mit mehreren möglichen Übereinstimmungsmustern vergleichen kann. Daher kann es als Ersatz für lange if… else… if
Leitern verwendet werden, während es einem komplexen Muster entspricht.
Syntax der switch-Anweisung
Die Syntax der switch-Anweisung lautet:
switch variable / expression (case value1: // Anweisungen case value2: // Anweisungen default: // Anweisungen)
Wie funktioniert die Switch-Anweisung in Swift?
- Der Schalterausdruck wird einmal ausgewertet.
- Es nimmt den Ausdruck und vergleicht ihn mit jedem Fallwert in der Reihenfolge (oben -> unten).
- Wenn eine Übereinstimmung vorliegt, wird die Anweisung im Fall ausgeführt und die gesamte switch-Anweisung wird ausgeführt, sobald der erste übereinstimmende switch-Fall abgeschlossen ist.
- Wenn es keine Übereinstimmung für den Fall gibt, fällt es auf den nächsten Fall.
- Das Standardschlüsselwort gibt den Code an, der ausgeführt werden soll, wenn keine Fallübereinstimmung vorliegt.
Hinweis : Der Hauptteil jedes Falls muss mindestens eine ausführbare Anweisung enthalten.
Beispiel 1: Einfaches Programm mit Switch-Anweisung
let dayOfWeek = 4 switch dayOfWeek ( case 1: print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") )
Wenn Sie das obige Programm ausführen, lautet die Ausgabe wie folgt:
Mittwoch
Im obigen Programm beginnt die switch-Anweisung damit, den Wert dayOfWeek mit Fall 1 abzugleichen . Da der Wert von dayOfWeek nicht mit dem ersten Fallwert 1 übereinstimmt, fällt er auf den nächsten Fall, bis einer übereinstimmt.
Da Fall 4 mit dem Schalterausdruck übereinstimmt, wird die Anweisung print("Wednesday")
im Fall ausgeführt und der Schalterfall beendet. Wenn kein Fall übereinstimmt, wird die Anweisung in der Standardeinstellung ausgeführt.
Beispiel 2: Switch-Anweisung mit Fallthrough
Wenn Sie das fallthrough
Schlüsselwort in der case-Anweisung verwenden, fährt das Steuerelement mit dem nächsten case fort, auch wenn der case-Wert nicht mit dem switch-Ausdruck übereinstimmt.
let dayOfWeek = 4 switch dayOfWeek ( case 1 : print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") fallthrough case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") )
Wenn Sie das obige Programm ausführen, lautet die Ausgabe wie folgt:
Mittwoch Donnerstag
Im obigen Programm führt Fall 4 die Anweisung aus print("Wednesday")
und das fallthrough
Schlüsselwort fährt mit Fall 5 fort . Die Anweisung print("Thursday")
in Fall 5 wird ausgeführt, auch wenn der Fall nicht mit dem Schalterausdruck übereinstimmt. Daher können Sie die Ausgabe am Donnerstag in der Konsole sehen.
Beispiel 3: Switch-Anweisung mit komplexeren Mustern
let programmingLanguage = (name: "Go", version: 10) switch programmingLanguage ( case (let name,let version) where (version < 0 && name.count < 0) : print("Invalid input") case ("Swift",let version) where version == 4: print("Found latest version of Swift") case ("Swift" ,… <4 ): print("Found older version of swift)") case ("Swift" ,4… ) : print("Swift version greater than 4 is not released yet") case ("Taylor Swift",30) : print("OMG. This is Taylor swift") case (let name, let version): print(""" Programming Language:(name) Version: (version) Status: Not found """) )
Wenn Sie das obige Programm ausführen, lautet die Ausgabe wie folgt:
Programmiersprache: Go Version: 10 Status: Nicht gefunden
Im obigen Programm stimmen wir die Ausdrucksprogrammierung Sprache vom Typ Tupel mit verschiedenen Fällen wie folgt ab:
case (let name,let version) where (version < 0 && name.count < 0)
Dieser Fall bindet den Wert des Schalterausdrucks an temporäre Konstanten oder Variablen zur Verwendung im Hauptteil des Falls mit demlet
Schlüsselwort. Dies wird als Wertebindung bezeichnet.
Sie können diese Werte auch mitwhere
Klausel bedingen . Für mehrere Where-Bedingungen können Sie sie mit dem&&
Operator wie im obigen Beispiel verketten .
Wenn der Fall die in der where-Klausel definierte Bedingung nicht erfüllt, werden Anweisungen in diesem case-Block nicht ausgeführt und fallen durch, um den nächsten Switch-Fall zu vergleichen.case ("Swift" ,… <4 )
Dieser Fall ordnet das erste Tupelelement dem Zeichenfolgenliteral zu"Swift"
und prüft auch, ob das zweite Element innerhalb des einseitigen Bereichs liegt… <4
.case ("Swift" ,4… )
Dieser Fall ordnet das erste Tupelelement dem Zeichenfolgenliteral zu"Swift"
und prüft auch, ob das zweite Element innerhalb des einseitigen Bereichs liegt4…
.case (let name, let version)
Dieser Fall bindet alle Werte der Tupel an die temporären Konstanten oder Variablen.