În acest articol, veți învăța să utilizați instrucțiunile de control al comutatorului pentru a controla fluxul de execuție al programului.
Instrucțiunea switch este, de asemenea, o varietate de instrucțiuni de control Swift egif-else, guard etc., care efectuează acțiuni diferite în funcție de condiții diferite.
Frumusețea declarației de comutare este că poate compara o valoare cu mai multe modele posibile de potrivire. Prin urmare, poate fi folosit ca înlocuitor pentru if… else… if
scări lungi în timp ce se potrivește cu modelul complex.
Sintaxa declarației switch
Sintaxa declarației switch este:
comuta variabila / expresie (valoare caz 1: // declarații valoare caz 2: // declarații implicit: // declarații)
Cum funcționează declarația Switch în Swift?
- Expresia comutatorului este evaluată o singură dată.
- Acesta ia expresia și se compară cu fiecare valoare de caz din ordine (Sus -> Jos).
- Dacă există o potrivire, instrucțiunea din interiorul carcasei este executată și întreaga instrucțiune de comutare își termină execuția imediat ce primul caz de comutare de potrivire este finalizat.
- Dacă nu există nicio potrivire pentru caz, acesta se încadrează în cazul următor.
- Cuvântul cheie implicit specifică codul de rulat dacă nu există o potrivire de caz.
Notă : corpul fiecărui caz trebuie să conțină cel puțin o instrucțiune executabilă.
Exemplul 1: program simplu folosind declarația Switch
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") )
Când rulați programul de mai sus, ieșirea va fi:
miercuri
În programul de mai sus, declarația switch începe prin potrivirea valorii dayOfWeek cu cazul 1 . Deoarece valoarea dayOfWeek nu se potrivește cu valoarea 1 a primului caz, aceasta cade la următorul caz până când unul se potrivește.
Deoarece cazul 4 se potrivește cu expresia comutatorului, instrucțiunea din print("Wednesday")
interiorul carcasei se execută și comutatorul cazului se încheie. Dacă niciun caz nu a fost egalat, instrucțiunea din interiorul valorii implicite se execută.
Exemplul 2: Declarație de comutare cu cădere
Dacă utilizați fallthrough
cuvântul cheie în instrucțiunea de caz, controlul trece la cazul următor, chiar dacă valoarea cazului nu se potrivește cu expresia comutatorului.
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") )
Când rulați programul de mai sus, ieșirea va fi:
miercuri joi
În programul de mai sus, cazul 4 execută instrucțiunea print("Wednesday")
și fallthrough
cuvântul cheie trece la cazul 5 . Declarația print("Thursday")
din cazul 5 se execută chiar dacă cazul nu se potrivește cu expresia comutatorului. Prin urmare, puteți vedea ieșirea joi în consolă.
Exemplul 3: Declarație de comutare cu modele mai complexe
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 """) )
Când rulați programul de mai sus, ieșirea va fi:
Limbaj de programare: Go Versiune: 10 Stare: Nu a fost găsit
În programul de mai sus, potrivim programarea expresiei Limba de tip tupl cu diferite cazuri ca mai jos:
case (let name,let version) where (version < 0 && name.count < 0)
Acest caz leagă valoarea expresiei comutatorului de constante temporare sau variabile pentru utilizare în corpul cazului culet
cuvânt cheie. Acest lucru este cunoscut sub numele de legare de valoare.
De asemenea, puteți aplica condiția acelor valori cuwhere
clauză. Pentru condiții multiple unde, le puteți concatena folosind&&
operatorul ca în exemplul de mai sus.
Dacă cazul nu îndeplinește condiția definită în interiorul clauzei where, instrucțiunile din cadrul blocului de caz nu se execută și intră pentru a compara următorul caz de comutare.case ("Swift" ,… <4 )
Acest caz se potrivește cu primul element al tuplului cu literalul șirului"Swift"
și verifică, de asemenea, dacă al doilea element se află în zona unilaterală… <4
.case ("Swift" ,4… )
Acest caz se potrivește cu primul element al tuplului cu literalul șirului"Swift"
și verifică, de asemenea, dacă al doilea element se află în zona unilaterală4…
.case (let name, let version)
Acest caz leagă fiecare valoare a tuplurilor de constantele sau variabilele temporare.