I denne artikel lærer du at bruge switchkontrolerklæringer til at kontrollere strømmen af dit programs udførelse.
Switch-erklæringen er også en række Swift-kontrolerklæringer, f.eks. Andet, vagt osv., Der udfører forskellige handlinger baseret på forskellige forhold.
Skønheden ved switch-sætningen er, at den kan sammenligne en værdi med flere mulige matchende mønstre. Derfor kan den bruges som erstatning for lange if… else… if
stiger, mens den matcher et komplekst mønster.
Syntaks for switch-sætning
Syntaksen for switch-sætningen er:
skifte variabel / udtryk (sagsværdi1: // udsagn sagsværdi2: // sætninger standard: // udsagn)
Hvordan fungerer Switch Statement i Swift?
- Skifteudtrykket evalueres en gang.
- Det tager udtrykket og sammenlignes med hver sagsværdi i rækkefølgen (Top -> Nederst).
- Hvis der er et match, udføres erklæringen inde i sagen, og hele switch-erklæringen afslutter dens udførelse, så snart den første matchende switch-sag er afsluttet.
- Hvis der ikke er noget match med sagen, falder det til den næste sag.
- Standardnøgleordet angiver koden, der skal køres, hvis der ikke er noget match mellem store og små bogstaver.
Bemærk : Teksten i hver sag skal indeholde mindst en eksekverbar erklæring.
Eksempel 1: Enkelt program ved hjælp af Switch Statement
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") )
Når du kører ovenstående program, vil output være:
onsdag
I ovenstående program starter switch-erklæringen med at matche dayOfWeek-værdi med sag 1 . Da dayOfWeek-værdien ikke matcher den første sagsværdi 1, falder den til den næste sag, indtil den ene matcher.
Da sag 4 matcher switch-udtrykket, print("Wednesday")
udføres sætningen inde i sagen, og switch-sagen afsluttes. Hvis ingen tilfælde blev matchet, udføres erklæring inde i standard .
Eksempel 2: Skift erklæring med gennembrud
Hvis du bruger fallthrough
nøgleordet inde i sagserklæringen, fortsætter kontrolelementet til det næste tilfælde, selvom sagsværdien ikke stemmer overens med switch-udtrykket.
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") )
Når du kører ovenstående program, vil output være:
onsdag Torsdag
I ovenstående program, sag 4 udfører erklæringen print("Wednesday")
og fallthrough
søgeord provenu til case5 . Erklæringen print("Thursday")
inde i sag 5 udføres, selvom sagen ikke matcher switch-udtrykket. Derfor kan du se output torsdag i konsollen.
Eksempel 3: Skift sætning med mere komplekse mønstre
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 """) )
Når du kører ovenstående program, vil output være:
Programmeringssprog: Go Version: 10 Status: Ikke fundet
I det ovennævnte program matcher vi udtryksprogrammeringssprog af typen tuple med forskellige tilfælde som nedenfor:
case (let name,let version) where (version < 0 && name.count < 0)
Denne sag binder switch-udtryksværdien til midlertidige konstanter eller variabler til brug i sagen medlet
sagsord. Dette er kendt som værdibinding.
Du kan også anvende betingelse for disse værdier medwhere
klausul. For flere hvor forhold kan du sammenkæde dem ved hjælp af&&
operator som i eksemplet ovenfor.
Hvis sagen ikke opfylder den betingelse, der er defineret inde i hvor klausul, udføres udsagn inden for sagsblokken ikke og falder igennem for at sammenligne næste skiftesag.case ("Swift" ,… <4 )
Denne sag matcher det første tupleelement med strengen bogstaveligt"Swift"
og kontrollerer også, om det andet element ligger inden for det ensidige område… <4
.case ("Swift" ,4… )
Denne sag matcher det første tupleelement med strengen bogstaveligt"Swift"
og kontrollerer også, om det andet element ligger inden for det ensidige område4…
.case (let name, let version)
Denne sag binder alle værdier af tuplerne til de midlertidige konstanter eller variabler.