I denne artikkelen vil du lære å bruke bryterkontrolluttalelser for å kontrollere gjennomføringen av programmet.
Bryteruttalelsen er også en rekke Swift-kontrolluttalelser, f.eks. Annet, vakt osv., Som utfører forskjellige handlinger basert på forskjellige forhold.
Det fine med bryteruttalelsen er at den kan sammenligne en verdi med flere mulige matchende mønstre. Derfor kan den brukes som erstatning for lange if… else… if
stiger mens den matcher komplekst mønster.
Syntaks for bryteruttalelse
Syntaksen for bryteruttalelsen er:
bytte variabel / uttrykk (saksverdi1: // utsagn saksverdi2: // utsagn standard: // utsagn)
Hvordan fungerer Switch Statement i Swift?
- Bryteruttrykket evalueres en gang.
- Det tar uttrykket og sammenlignes med hver saksverdi i rekkefølgen (Øverst -> Nederst).
- Hvis det er samsvar, blir utsagnet i saken utført, og hele bryteruttalelsen fullfører kjøringen så snart den første matchende bryteren er fullført.
- Hvis det ikke samsvarer med saken, faller det til neste sak.
- Standard nøkkelordet spesifiserer koden som skal kjøres hvis det ikke er noen sak.
Merk : Hoveddelen av hvert tilfelle må inneholde minst en kjørbar uttalelse.
Eksempel 1: Enkelt program ved bruk av 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 kjører programmet ovenfor, vil utdataene være:
onsdag
I det ovennevnte programmet starter bryteruttalelsen med å matche dayOfWeek-verdien med sak 1 . Siden dayOfWeek-verdien ikke samsvarer med den første saksverdien 1, faller den til neste sak til en samsvarer.
Siden sak 4 samsvarer med bryteruttrykket, print("Wednesday")
utføres påstanden i saken og bryter saken avsluttes. Hvis ingen tilfeller ble matchet, kjøres uttalelse i standard .
Eksempel 2: Bytt uttalelse med gjennombrudd
Hvis du bruker fallthrough
nøkkelordet inne i saksuttalelsen, fortsetter kontrollen til neste sak, selv om saksverdien ikke samsvarer med bytteuttrykket.
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 kjører programmet ovenfor, vil utdataene være:
onsdag Torsdag
I det ovennevnte programmet utfører sak 4 uttalelsen, print("Wednesday")
og fallthrough
nøkkelordet fortsetter til sak 5 . Uttalelsen print("Thursday")
i sak 5 utføres selv om saken ikke samsvarer med bryteruttrykket. Derfor kan du se utdata torsdag i konsollen.
Eksempel 3: Bytt uttalelse med mer 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 kjører programmet ovenfor, vil utdataene være:
Programmeringsspråk: Go Versjon: 10 Status: Ikke funnet
I det ovennevnte programmet matcher vi uttrykksprogrammeringsspråk av typen tuple med forskjellige tilfeller som nedenfor:
case (let name,let version) where (version < 0 && name.count < 0)
Denne saken binder bryteruttrykkets verdi til midlertidige konstanter eller variabler for bruk i hoveddelen av saken medlet
nøkkelord. Dette er kjent som verdibinding.
Du kan også bruke betingelse for disse verdiene medwhere
klausul. For flere hvor forhold, kan du sammenkoble dem ved hjelp av&&
operator som i eksemplet ovenfor.
Hvis saken ikke oppfyller betingelsen som er definert inne i klausulen, utføres ikke utsagn i saksblokken og faller gjennom for å sammenligne neste brytertilfelle.case ("Swift" ,… <4 )
Denne saken samsvarer med det første tupleelementet med strengen bokstavelig"Swift"
og sjekker også om det andre elementet ligger innenfor ensidig område… <4
.case ("Swift" ,4… )
Denne saken samsvarer med det første tupleelementet med strengen bokstavelig"Swift"
og sjekker også om det andre elementet ligger innenfor ensidig område4…
.case (let name, let version)
Denne saken binder alle verdier av tuplene til de midlertidige konstanter eller variabler.