Dieses Mal habe ich etwas über die switch-Anweisung gelernt und werde sie ausgeben.
*** Kurz gesagt, die switch-Anweisung ist eine Steuerungssyntax, die ein Muster verwendet, um die Ausführungsanweisung gemäß dem Wert des Steuerausdrucks umzuschalten. *** ***
Die grundlegende Schreibmethode ist wie folgt
qiita.rbvar
Schaltersteuerungstyp{
Fallmuster 1:
Anweisung, die ausgeführt wird, wenn der Steuerausdruck mit Muster 1 übereinstimmt
Fallmuster 2:
Anweisung, die ausgeführt wird, wenn der Steuerausdruck mit Muster 2 übereinstimmt
default:
Anweisung, die ausgeführt wird, wenn der Steuerausdruck keinem Muster entspricht
}
Die switch-Anweisung hat die Eigenschaft, dass nach dem Abgleichen und Ausführen der Ausführungsanweisung der Abgleich endet und die nachfolgenden Muster übersprungen werden. Die if-Anweisung und die guard-Anweisung wurden in zwei Fälle verzweigt, unabhängig davon, ob sie gelten oder nicht, aber die *** switch-Anweisung kann in mehrere Fälle verzweigen. *** ***
Schauen wir uns als nächstes ein einfaches Beispiel an
qiita.rbvar
let a = -2
switch a {
case Int.min..<0:
print("ist ein negativer Wert von a")
case 1..<Int.max:
print("a ist ein positiver Wert")
default:
print("a ist 0")
}
Ausführungsergebnis:a ist ein negativer Wert
Mit dem Schlüsselwort where können Sie Bedingungen hinzufügen, die Ihrem Fall entsprechen. Das ist alles, also schauen wir uns gleich die grundlegende Syntax an!
qiita.rbvar
Schaltersteuerungstyp{
Fallmuster-Kontrollausdruck:
Die Steuerformel entspricht Muster 1,Und,Anweisung wird ausgeführt, wenn der bedingte Ausdruck erfüllt ist
default:
Anweisung, die ausgeführt wird, wenn der Steuerausdruck keinem Muster entspricht
Das Folgende ist ein einfaches Beispiel.
qiita.rbvar
let optionalA: Int? = 5
switch optionalA {
case .some(let a)where a > 10:
print("Wert größer als 10\(a)Existiert")
default:
print("Wert existiert nicht,Oder weniger als 10")
Ausführungsergebnis:Wert existiert nicht,Oder weniger als 10
Im obigen Beispiel hat die Konstante optionalA einen Wert, sodass sie mit dem Teil *** case .some (let a) *** übereinstimmt, jedoch nicht die Bedingung erfüllt, bei der a> 10 ist.
Die break-Anweisung ist eine Anweisung, die die Ausführung des switch-Anweisungsfalls unterbricht. Schauen wir uns ein einfaches Beispiel an.
qiita.rbvar
let a = 1
switch a{
case 1:
print("Sie haben sich erfolgreich angemeldet")
break
print("Ich konnte mich nicht anmelden")
default:
break
}
Ausführungsergebnis:Sie haben sich erfolgreich angemeldet
Im obigen Beispiel werden im passenden Fall 1 zwei print () -Funktionen geschrieben: Die break-Anweisung wird jedoch vor der zweiten Druckfunktion geschrieben, also vor dem zweiten Druck Die Funktion wird nicht ausgeführt.
Das Label ist ein Mechanismus zum Angeben des Steuerungsziels der break-Anweisung. Es wird in Fällen verwendet, in denen die switch-Anweisung angegeben werden muss, die das Ziel der break-Anweisung ist, z. B. wenn die switch-Anweisung verschachtelt ist.
Verschachtelung: Ein Programmierbegriff, der eine Struktur bedeutet, in der dasselbe in eine bestimmte Sache eingefügt wird. *** ***
Schauen wir uns die Grundstruktur an!
qiita.rbvar
Markenname:switch-Anweisung
Labelname brechen
Schauen wir uns nun ein Beispiel an, in dem ein Etikett benötigt wird.
qiita.rbvar
import UIKit
let value = 0 as Any
outerSwitch: switch value{
case let int as Int:
let description: String
switch int {
case 1,3,5,7,9:
description = "Seltsam"
case 2,4,6,8,10:
description = "Sogar"
default:
print("Unzutreffend")//Lies hier
break outerSwitch
}
print("Wert ist\(description)ist")
default:
print("Der Wert ist nicht vom Typ Int")
}
Ausführungsergebnis:Unzutreffend
Wenn im obigen Beispiel der Wert "Beliebiger Typ" ein Int-Typ von 1 bis 10 ist, gibt dieses Programm aus, ob der Wert ungerade oder gerade ist. Da der angegebene Wert 0 ist, wird ausgegeben, dass der Wert außerhalb des Gültigkeitsbereichs liegt.
*** Ändern wir nun die Let-Wert-Spezifikation in "aaa". *** ***
qiita.rbvar
import UIKit
let value = "aaa" as Any
outerSwitch: switch value{
case let int as Int:
let description: String
switch int {
case 1,3,5,7,9:
description = "Seltsam"
case 2,4,6,8,10:
description = "Sogar"
default:
print("Unzutreffend")
break outerSwitch
}
print("Wert ist\(description)ist")
default:
print("Der Wert ist nicht vom Typ Int")//Lies hier
}
Ausführungsergebnis:Der Wert ist nicht vom Typ Int
Die zweite Druckfunktion wird aufgerufen, da der auf diese Weise angegebene Wert nicht vom Typ Int ist.
Die Fallthrough-Anweisung ist eine Steuerungssyntax, die die Ausführung eines Falls in einer switch-Anweisung beendet und den nächsten Fall ausführt.
qiita.rbvar
let a = 1
switch a{
case 1:
print("Sie haben sich erfolgreich angemeldet")
fallthrough
case 2:
print("Ich konnte mich nicht anmelden")
default:
print("default")
}
Ausführungsergebnis:
Sie haben sich erfolgreich angemeldet
Ich konnte mich nicht anmelden
Im obigen Beispiel verschiebt die Fallthrough-Anweisung die Ausführung zum nächsten Fall, case2. Daher werden case1 und case2 ausgegeben.
Recommended Posts