Šajā rakstā jūs iemācīsities izmantot slēdžu vadības paziņojumus, lai kontrolētu programmas izpildes plūsmu.
Slēdža paziņojums ir arī dažādi Swift vadības paziņojumi, piemēram, cits, aizsargs utt., Kas veic dažādas darbības, pamatojoties uz dažādiem apstākļiem.
Pārslēgšanās paziņojuma skaistums ir tāds, ka tā var salīdzināt vērtību ar vairākiem iespējamiem atbilstības modeļiem. Tāpēc to var izmantot kā garu if… else… if
kāpņu aizstājēju, vienlaikus saskaņojot sarežģītu modeli.
Slēdža paziņojuma sintakse
Slēdža paziņojuma sintakse ir šāda:
slēdzis mainīgais / izteiksme (gadījuma vērtība1: // paziņojumu gadījuma vērtība2: // paziņojumu noklusējums: // priekšraksti)
Kā darbojas Swift paziņojuma pārsūtīšana?
- Slēdža izteiksme tiek novērtēta vienu reizi.
- Tas ņem izteiksmi un salīdzina ar katru gadījuma vērtību secībā (Augšējā -> Apakšā).
- Ja ir sakritība, lietā esošais paziņojums tiek izpildīts, un viss slēdzis izraksta izpildi, tiklīdz ir pabeigta pirmā atbilstošā slēdža lieta.
- Ja lietai nav atbilstības, tā nonāk nākamajā lietā.
- Noklusējuma atslēgvārds norāda kodu, kas jāizpilda, ja nav reģistru atbilstības.
Piezīme . Katra gadījuma pamattekstā jābūt vismaz vienam izpildāmam priekšrakstam.
1. piemērs: vienkārša programma, izmantojot 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") )
Palaidot iepriekš minēto programmu, izeja būs:
Trešdiena
Iepriekš minētajā programmā slēdzis sākas ar dayOfWeek vērtības atbilstību 1. gadījumam . Tā kā dayOfWeek vērtība neatbilst pirmā gadījuma vērtībai 1, tā nokrīt uz nākamo gadījumu, līdz viena atbilst.
Tā kā 4. gadījums sakrīt ar slēdža izteiksmi, print("Wednesday")
lietā esošais paziņojums tiek izpildīts un slēdzis beidzas. Ja neviens gadījums nav saskaņots, izpilda paziņojumu noklusējuma iekšpusē .
2. piemērs: Pārslēdziet paziņojumu ar novirzi
Ja lietojat fallthrough
atslēgvārdu gadījuma paziņojumā, vadīkla pāriet uz nākamo gadījumu pat tad, ja gadījuma vērtība nesakrīt ar slēdža izteiksmi.
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") )
Palaidot iepriekš minēto programmu, izeja būs:
Trešdiena ceturtdiena
Iepriekš minētajā programmā 4. gadījums izpilda paziņojumu, print("Wednesday")
un fallthrough
atslēgvārds pāriet uz case5 . Paziņojums print("Thursday")
iekšpusē gadījumā 5 izpilda, pat tad, ja lieta nesakrīt ar slēdzi izteiksmi. Tāpēc konsolē var redzēt izvades ceturtdienu .
3. piemērs: Pārslēdziet paziņojumu ar sarežģītākiem modeļiem
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 """) )
Palaidot iepriekš minēto programmu, izeja būs:
Programmēšanas valoda: Go Versija: 10 Statuss: Nav atrasts
Iepriekš minētajā programmā mēs sakārtojam izteiksmes programmēšanu Tuple tipa valoda ar dažādiem gadījumiem, kā norādīts zemāk:
case (let name,let version) where (version < 0 && name.count < 0)
Šis gadījums saista slēdža izteiksmes vērtību ar pagaidu konstantēm vai mainīgajiem lielumiem lietošanai lietas pamattekstā arlet
atslēgvārdu. To sauc par saistošo vērtību.
Nosacījumu šīm vērtībām varat piemērot arī arwhere
klauzulu. Vairāku apstākļu gadījumā varat tos savienot, izmantojot&&
operatoru, kā parādīts iepriekšējā piemērā.
Ja gadījums neatbilst nosacījumam, kas definēts iekš klauzulas, teikumi šī gadījuma bloka iekšpusē netiek izpildīti un nokrīt, lai salīdzinātu nākamo slēdža gadījumu.case ("Swift" ,… <4 )
Šis gadījums sakrīt ar pirmās kārtas elementu ar virknes literālu"Swift"
un pārbauda, vai otrais elements atrodas vienpusējā diapazonā… <4
.case ("Swift" ,4… )
Šis gadījums sakrīt ar pirmās kārtas elementu ar virknes literālu"Swift"
un pārbauda, vai otrais elements atrodas vienpusējā diapazonā4…
.case (let name, let version)
Šis gadījums saista visas kopas vērtības ar pagaidu konstantēm vai mainīgajiem.