U ovom ćete članku naučiti koristiti naredbe kontrole prekidača za kontrolu tijeka izvršavanja vašeg programa.
Izjava prekidača također je raznolikost Swift upravljačke izjave egif-else, guard itd., Koja izvodi različite radnje na temelju različitih uvjeta.
Ljepota izjave switch je u tome što može usporediti vrijednost s nekoliko mogućih obrazaca podudaranja. Stoga se može koristiti kao zamjena za duge if… else… if
ljestve dok istovremeno odgovara složenom uzorku.
Sintaksa naredbe switch
Sintaksa naredbe switch je:
prebaciti varijablu / izraz (vrijednost slučaja1: // izrazi vrijednost slučaja2: // iskazi zadani: // iskazi)
Kako funkcionira Izjava o prebacivanju u Swiftu?
- Izraz prekidača procjenjuje se jednom.
- Uzima izraz i uspoređuje se sa svakom vrijednošću slučaja u redoslijedu (Vrh -> Dno).
- Ako postoji podudaranje, naredba unutar kućišta se izvršava i cjelokupna naredba prekida završava svoje izvršavanje čim je dovršen prvi podudarni slučaj prekidača.
- Ako za slučaj nema podudarnosti, to se odnosi na sljedeći slučaj.
- Zadana ključna riječ određuje kôd koji će se pokrenuti ako nema podudaranja velikih i malih slova.
Napomena : Tijelo svakog slučaja mora sadržavati najmanje jedan izvršni izraz.
Primjer 1: Jednostavni program koji koristi Izjavu o prebacivanju
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") )
Kada pokrenete gornji program, izlaz će biti:
srijeda
U gornjem programu, naredba switch započinje usklađivanjem vrijednosti dayOfWeek sa slučajem 1 . Budući da se vrijednost dayOfWeek ne podudara s prvom vrijednošću slučaja 1, pada u sljedeći slučaj dok se ne podudara.
Budući da se slučaj 4 podudara s izrazom prekidača, izraz print("Wednesday")
unutar slučaja se izvršava i prekidač završava. Ako se nije podudarao nijedan slučaj, izvršava se naredba unutar zadane vrijednosti .
Primjer 2: Izmjena izjave s padom
Ako koristite fallthrough
ključnu riječ unutar izraza slučaja, kontrola nastavlja na sljedeći slučaj, čak i ako se vrijednost slučaja ne podudara s izrazom prekidača.
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") )
Kada pokrenete gornji program, izlaz će biti:
Srijeda četvrtak
U gornjem programu, slučaj 4 izvršava izraz, print("Wednesday")
a fallthrough
ključna riječ prelazi na case5 . Izjava print("Thursday")
unutar slučaja 5 izvršava se čak i ako se slučaj ne podudara s izrazom prekidača. Stoga izlaz možete vidjeti u četvrtak na konzoli.
Primjer 3: Izjava o prebacivanju sa složenijim uzorcima
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 """) )
Kada pokrenete gornji program, izlaz će biti:
Programski jezik: Go Verzija: 10 Status: Nije pronađeno
U gornjem programu podudaramo izraz programiranjejezika tipa tuple s različitim slučajevima kao što je dolje prikazano:
case (let name,let version) where (version < 0 && name.count < 0)
Ovaj slučaj veže vrijednost izraza preklopnika na privremene konstante ili varijable za upotrebu u tijelu slučaja slet
ključnom riječi. To je poznato kao vezivanje vrijednosti.
Klauzulom također možete primijeniti uvjet na te vrijednostiwhere
. Za višestruke uvjete gdje ih možete povezati pomoću&&
operatora kao u gornjem primjeru.
Ako slučaj ne zadovoljava uvjet definiran unutar klauzule where, izrazi unutar tog bloka slučaja se ne izvršavaju i prolaze za usporedbu sljedećeg preklopnog slučaja.case ("Swift" ,… <4 )
Ovaj slučaj podudara prvi element nabora s doslovnim nizom,"Swift"
a također provjerava nalazi li se drugi element unutar jednostranog raspona… <4
.case ("Swift" ,4… )
Ovaj slučaj podudara prvi element nabora s doslovnim nizom,"Swift"
a također provjerava nalazi li se drugi element unutar jednostranog raspona4…
.case (let name, let version)
Ovaj slučaj veže sve vrijednosti korpica na privremene konstante ili varijable.