In questo articolo imparerai a usare le istruzioni di controllo switch per controllare il flusso di esecuzione del tuo programma.
L'istruzione switch è anche una varietà di istruzioni di controllo Swift egif-else, guard, ecc., Che esegue azioni diverse in base a condizioni diverse.
Il bello dell'istruzione switch è che può confrontare un valore con diversi possibili modelli di corrispondenza. Pertanto, può essere utilizzato come sostituto di if… else… if
scale lunghe mentre si abbina un modello complesso.
Sintassi dell'istruzione switch
La sintassi dell'istruzione switch è:
cambia variabile / espressione (caso valore1: // istruzioni caso valore2: // istruzioni default: // istruzioni)
Come funziona l'istruzione Switch in Swift?
- L'espressione switch viene valutata una volta.
- Prende l'espressione e la confronta con ogni valore del caso nell'ordine (Alto -> Basso).
- Se c'è una corrispondenza, l'istruzione all'interno del case viene eseguita e l'intera istruzione switch termina la sua esecuzione non appena il primo caso switch corrispondente viene completato.
- Se non c'è corrispondenza per il caso, si passa al caso successivo.
- La parola chiave predefinita specifica il codice da eseguire se non c'è corrispondenza tra maiuscole e minuscole.
Nota : il corpo di ogni caso deve contenere almeno un'istruzione eseguibile.
Esempio 1: programma semplice che utilizza l'istruzione 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") )
Quando esegui il programma sopra, l'output sarà:
mercoledì
Nel programma precedente, l'istruzione switch inizia facendo corrispondere il valore dayOfWeek con il caso 1 . Poiché il valore dayOfWeek non corrisponde al valore 1 del primo caso, passa al caso successivo finché uno non corrisponde.
Poiché il caso 4 corrisponde all'espressione switch, l'istruzione print("Wednesday")
all'interno del case viene eseguita e il caso switch termina. Se nessun caso è stato trovato, viene eseguita l' istruzione all'interno di default .
Esempio 2: istruzione Switch con fallthrough
Se si utilizza la fallthrough
parola chiave all'interno dell'istruzione case, il controllo procede al case successivo anche se il valore case non corrisponde all'espressione switch.
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") )
Quando esegui il programma sopra, l'output sarà:
mercoledi giovedi
Nel programma precedente, il caso 4 esegue l'istruzione print("Wednesday")
e la fallthrough
parola chiave procede al caso5 . L'istruzione print("Thursday")
all'interno del case 5 viene eseguita anche se il case non corrisponde all'espressione switch. Pertanto, è possibile visualizzare l'output giovedì nella console.
Esempio 3: istruzione Switch con modelli più complessi
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 """) )
Quando esegui il programma sopra, l'output sarà:
Linguaggio di programmazione: Go Versione: 10 Stato: Non trovato
Nel programma sopra, stiamo confrontando la programmazione delle espressioni Linguaggio di tipo tupla con casi diversi come di seguito:
case (let name,let version) where (version < 0 && name.count < 0)
Questo caso associa il valore dell'espressione switch a costanti o variabili temporanee da utilizzare nel corpo del caso con lalet
parola chiave. Questo è noto come associazione di valori.
È inoltre possibile applicare la condizione a tali valori con lawhere
clausola. Per più condizioni where, è possibile concatenarle utilizzando l'&&
operatore come nell'esempio sopra.
Se il case non soddisfa la condizione definita all'interno della clausola where, le istruzioni all'interno di quel blocco case non vengono eseguite e cadono per confrontare il successivo switch case.case ("Swift" ,… <4 )
Questo caso corrisponde al primo elemento della tupla con la stringa letterale"Swift"
e controlla anche se il secondo elemento si trova all'interno dell'intervallo unilaterale… <4
.case ("Swift" ,4… )
Questo caso corrisponde al primo elemento della tupla con la stringa letterale"Swift"
e controlla anche se il secondo elemento si trova all'interno dell'intervallo unilaterale4…
.case (let name, let version)
Questo caso lega tutti i valori delle tuple alle costanti o variabili temporanee.