V tomto článku sa naučíte používať ovládacie príkazy prepínača na riadenie toku vykonávania vášho programu.
Príkaz switch je tiež rôznymi príkazmi ovládania Swift, napr. Ifif-else, guard atď., Ktoré vykonávajú rôzne akcie na základe rôznych podmienok.
Krása príkazu switch je, že môže porovnávať hodnotu s niekoľkými možnými vzormi zhody. Preto ho možno použiť ako náhradu za dlhé if… else… if
rebríky pri súčasnom zosúladení zložitého vzoru.
Syntax príkazu switch
Syntax príkazu switch je:
prepnúť premennú / výraz (hodnota prípadu1: // hodnota príkazov hodnota2: // predvolené hodnoty príkazov: // príkazy)
Ako funguje príkaz Switch v aplikácii Swift?
- Prepínací výraz sa vyhodnotí raz.
- Zoberie výraz a porovnáva sa s každou hodnotou prípadu v poradí (hore -> dole).
- Ak existuje zhoda, vykoná sa príkaz vo vnútri prípadu a celý príkaz switch dokončí svoje vykonávanie, akonáhle sa dokončí prvý vyhovujúci prípad prepnutia.
- Ak pre prípad neexistuje zhoda, pripadá na ďalší prípad.
- Predvolené kľúčové slovo určuje kód, ktorý sa má spustiť, ak sa nezhoduje veľké a malé písmená.
Poznámka : Telo každého prípadu musí obsahovať najmenej jeden spustiteľný príkaz.
Príklad 1: Jednoduchý program využívajúci príkaz 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") )
Keď spustíte vyššie uvedený program, výstup bude:
Streda
Vo vyššie uvedenom programe sa príkaz switch začína porovnaním hodnoty dayOfWeek s prípadom 1 . Pretože hodnota dayOfWeek sa nezhoduje s hodnotou prvého prípadu 1, spadá do nasledujúceho prípadu, kým sa jeden nezhoduje.
Pretože prípad 4 sa zhoduje s výrazom switch, príkaz print("Wednesday")
vo vnútri case sa vykoná a switch case sa ukončí. Ak sa nezhoduje žiadny prípad, vykoná sa vyhlásenie v predvolenom nastavení .
Príklad 2: Prepnutie výpisu s prepadom
Ak použijete fallthrough
kľúčové slovo vo vnútri príkazu case, kontrola prejde na ďalší prípad, aj keď sa hodnota prípadu nezhoduje s výrazom 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") )
Keď spustíte vyššie uvedený program, výstup bude:
Streda štvrtok
Vo vyššie uvedenom programe prípad 4 vykoná príkaz print("Wednesday")
a fallthrough
kľúčové slovo prejde na prípad5 . Príkaz print("Thursday")
v prípade 5 sa vykoná, aj keď sa prípad nezhoduje s výrazom switch. Preto môžete v konzole vidieť výstup vo štvrtok .
Príklad 3: Príkaz Switch s zložitejšími vzormi
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 """) )
Keď spustíte vyššie uvedený program, výstup bude:
Programovací jazyk: Prejsť Verzia: 10 Stav: Nenašiel sa
Vo vyššie uvedenom programe sa zhodujeme s výrazom programovací jazyk Jazyk s tuple s rôznymi prípadmi, ako je uvedené nižšie:
case (let name,let version) where (version < 0 && name.count < 0)
Tento prípad viaže hodnotu výrazu prepínača na dočasné konštanty alebo premenné, ktoré sa dajú použiť v tele prípadu slet
kľúčovým slovom. Toto sa nazýva väzba na hodnotu.
Na tieto hodnoty môžete tiež použiť podmienku swhere
klauzulou. V prípade viacerých podmienok ich môžete spojiť pomocou&&
operátora ako v príklade vyššie.
Ak prípad nespĺňa podmienku definovanú vo vnútri klauzule where, príkazy v danom bloku prípadov sa nevykonajú a prepadnú kvôli porovnaniu ďalšieho prípadu zmeny.case ("Swift" ,… <4 )
Tento prípad zosúladí prvok n-tice s reťazcovým literálom"Swift"
a tiež skontroluje, či druhý prvok leží vo vnútri jednostranného rozsahu… <4
.case ("Swift" ,4… )
Tento prípad zosúladí prvok n-tice s reťazcovým literálom"Swift"
a tiež skontroluje, či druhý prvok leží vo vnútri jednostranného rozsahu4…
.case (let name, let version)
Tento prípad spojí všetky hodnoty n-tic s dočasnými konštantami alebo premennými.