English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift switch-Anweisung

In diesem Artikel werden Sie lernen, wie Sie den switch-Kontrollbefehl verwenden, um den Ablauf der Programmausführung zu steuern.

Der switch-Befehl ist auch eine Vielzahl von Swift-Kontrollbefehlen, z.B.if-else,guardund andere, die verschiedene Aktionen basierend auf verschiedenen Bedingungen ausführen.

Der Vorteil des switch-Befehls liegt darin, dass er Werte mit mehreren möglichen Übereinstimmungsmustern vergleichen kann. Daher kann er lange if..else..if-Diagramme ersetzen und komplexe Muster matchen.

Die Syntax des switch-Befehls

Die Syntax des switch-Befehls ist:

switch Variable/Ausdruck {
case value1:
	// Anweisung
case value2:
	// Anweisung
default:
	// Anweisung
}

Wie funktioniert der Switch-Befehl in Swift?

  • Der switch-Ausdruck wird nur einmal berechnet.

  • Es akzeptiert Ausdrücke und vergleicht sie in der Reihenfolge (oben-> mit jedem case-Wert verglichen.

  • Falls eine Übereinstimmung vorhanden ist, werden die Anweisungen im case ausgeführt, und wenn der erste passende switch case abgeschlossen ist, wird die gesamte switch-Anweisung beendet.

  • Falls kein case-Match vorhanden ist, wird auf den nächsten case-Befehl übergegangen.

  • Falls keine case-Match gefunden wird, wird der Code, der durch das Schlüsselwort default angegeben wird, ausgeführt.

Beachten Sie:Der Körper jeder case muss mindestens einen ausführbaren Befehl enthalten.

1:Einfaches Programm zur Verwendung von Switch-Anweisungen

let dayOfWeek = 4
switch dayOfWeek {
	case 1:
		print("Sunday")
	    
	case 2:
		print("Monday")
	    
	case 3:
		print("Tuesday")
	    
	case 4:
		print("Wednesday")
	    
	case 5:
		print("Donnerstag")
	    
	case 6:
		print("Freitag")
	    
	case 7:
		print("Samstag")
	    
	default:
		print("Ungültiger Tag")
}

Wenn Sie das obige Programm ausführen, wird die Ausgabe sein:

Mittwoch

Im obigen Programm wird der switch-Befehl durch das Vergleichen des Wertes von dayOfWeek mit case 1zu beginnen. Da der Wert von dayOfWeekvalue nicht mit dem Wert des ersten Falls übereinstimmt, wird er auf den nächsten Fall heruntergestuft, bis eine Übereinstimmung gefunden wird.

Dacase 4Passt zum switch-Ausdruck, daher wird der print("Wednesday")-Befehl im case ausgeführt und der switch-Case wird beendet. Wird kein case gefunden, wirddefaultInterne Anweisungen.

2:Switch-Anweisung mit fallthrough

Wenn der Schlüsselwort "fallthrough" in einer case-Anweisung verwendet wird, wird die Kontrolle auch fortgesetzt, selbst wenn der Wert der case nicht mit dem Ausdruck im switch-Muster ü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("Donnerstag")
	    
	case 6:
		print("Freitag")
	    
	case 7:
		print("Samstag")
	    
	default:
		print("Ungültiger Tag")
}

Wenn Sie das obige Programm ausführen, wird die Ausgabe sein:

Mittwoch
Donnerstag

Im obigen Programm, case 4 Der Befehl print("Mittwoch") wird ausgeführt, und der Schlüsselwort 'fallthrough' führt fort 5.case 5Der Befehl print("Donnerstag") wird ausgeführt, selbst wenn der cas mit dem switch-Ausdruck nicht übereinstimmt. Daher können Sie auch in der Konsole die Ausgabe Thursday sehen.

3

:Switch-Anweisung mit komplexeren Mustern 10)
Beispiel
	let programmingLanguage = (name: "Go", version:
		switch programmingLanguage {
	case (let name, let version) where (version < 0 && name.count < 0): 4:
		print("Ungültige Eingabe")
	case ("Swift", let version) where version ==4 ) :
		print("Alte Version von Swift gefunden")
	case ("Swift",4...):
		print("Swift-Version ist größer als4nicht veröffentlicht)
	case ("Taylor Swift",30) :
		print("Oh mein Gott. Das ist Taylor Swift")
	case (let name, let version):  
		print(""
			Programmiersprache: (name)
			Version: (version)
			Status: Nicht gefunden
		""
}

Wenn Sie das obige Programm ausführen, wird die Ausgabe sein:

Programmiersprache: Go
Version: 10
Status: Nicht gefunden

In dem obigen Programm werden wir den Ausdruck des Tupeltyps programmingLanguage mit den folgenden verschiedenen Fällen abgestimmt:

  • case (let name, let version) where (version < 0 && name.count < 0)
    Dieser Beispielcode bindet den Wert des switch-Ausdrucks an eine temporäre Konstante oder Variable, um den Schlüsselwort 'let' in Groß- und Kleinschreibung zu verwenden. Dies wird als Wertbindung bezeichnet.
    Sie können auch eine where-Klausel verwenden, um Bedingungen auf diese Werte anzuwenden. Bei mehreren Bedingungen können Sie die &&-Operation verwenden, um sie zu verbinden, wie im obigen Beispiel gezeigt.
    Falls der case die Bedingungen der where-Klausel nicht erfüllt, werden die Anweisungen in diesen case-Blöcken nicht ausgeführt, und es ist nicht möglich, den nächsten switch case durch Vergleich zu erreichen.

  • case ("Swift" , ..<4 )
    In diesem Fall wird der erste Element des Tuples mit dem String-Literal "Swift" abgeglichen, und es wird überprüft, ob das zweite Element im Einzelsegment liegt..<4。

  • case ("Swift" ,4...)
    In diesem Fall wird der erste Element des Tuples mit dem String-Literal "Swift" abgeglichen, und es wird überprüft, ob das zweite Element im Einzelsegment liegt4…。

  • case (let name, let version)
    In diesem Fall werden die Werte jedes Tuples an temporäre Konstanten oder Variablen gebunden.