V tomto článku se naučíte používat příkazy ovládání přepínače k řízení toku provádění vašeho programu.
Příkaz switch je také řada příkazů ovládání Swift egif-else, guard atd., Které provádějí různé akce na základě různých podmínek.
Krása příkazu switch je, že může porovnávat hodnotu s několika možnými shodnými vzory. Lze jej proto použít jako náhradu za dlouhé if… else… if
žebříky při sladění složitého vzoru.
Syntaxe příkazu switch
Syntaxe příkazu switch je:
přepnout proměnnou / výraz (hodnota případu1: // příkazy hodnota případu2: // výchozí příkazy: // příkazy)
Jak funguje příkaz Switch ve Swiftu?
- Přepínací výraz je vyhodnocen jednou.
- Převezme výraz a porovná se s každou hodnotou případu v pořadí (Horní -> Dolní).
- Pokud existuje shoda, provede se příkaz uvnitř případu a celý příkaz přepínače dokončí své provádění, jakmile je dokončen první odpovídající případ přepnutí.
- Pokud pro případ neexistuje shoda, spadá to do dalšího případu.
- Výchozí klíčové slovo určuje kód, který se má spustit, pokud neexistuje shoda případu.
Poznámka : Tělo každého případu musí obsahovat alespoň jeden spustitelný příkaz.
Příklad 1: Jednoduchý program využívající pří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") )
Když spustíte výše uvedený program, výstup bude:
středa
Ve výše uvedeném programu příkaz switch začíná porovnáním hodnoty dayOfWeek s případem 1 . Protože hodnota dayOfWeek neodpovídá hodnotě prvního případu 1, spadne do dalšího případu, dokud se jeden neshoduje.
Vzhledem k tomu, že se případ 4 shoduje s výrazem switch, provede se příkaz print("Wednesday")
uvnitř případu a případ switch se ukončí. Pokud nebyl přiřazen žádný případ, provede se příkaz ve výchozím nastavení .
Příklad 2: Přepnutí příkazu s propadem
Pokud použijete fallthrough
klíčové slovo uvnitř příkazu case, ovládací prvek přejde na další případ, i když hodnota případu neodpovídá výrazu 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") )
Když spustíte výše uvedený program, výstup bude:
Středa čtvrtek
Ve výše uvedeném programu případ 4 provede příkaz print("Wednesday")
a fallthrough
klíčové slovo bude pokračovat případu5 . Příkaz print("Thursday")
uvnitř případu 5 se provede, i když se případ neshoduje s výrazem přepínače. Proto můžete v konzole vidět výstup ve čtvrtek .
Příklad 3: Přepínací příkaz se složitějšími vzory
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 """) )
Když spustíte výše uvedený program, výstup bude:
Programovací jazyk: Go Verze: 10 Stav: Nenalezeno
Ve výše uvedeném programu odpovídáme výrazu programovací jazyk jazyka tuple s různými případy, jak je uvedeno níže:
case (let name,let version) where (version < 0 && name.count < 0)
Tento případ váže hodnotu výrazu přepínače na dočasné konstanty nebo proměnné pro použití v těle případu slet
klíčovým slovem. Toto se nazývá vazba hodnot.
Na tyto hodnoty můžete také použít podmínku pomocíwhere
klauzule. Pro více podmínek, kde je můžete zřetězit pomocí&&
operátoru jako v příkladu výše.
Pokud případ nesplňuje podmínku definovanou uvnitř klauzule where, příkazy uvnitř bloku případů se neprovedou a propadnou k porovnání dalšího případu přepnutí.case ("Swift" ,… <4 )
Tento případ odpovídá prvku n-tice s řetězcovým literálem"Swift"
a také zkontroluje, zda druhý prvek leží uvnitř jednostranného rozsahu… <4
.case ("Swift" ,4… )
Tento případ odpovídá prvku n-tice s řetězcovým literálem"Swift"
a také zkontroluje, zda druhý prvek leží uvnitř jednostranného rozsahu4…
.case (let name, let version)
Tento případ váže všechny hodnoty n-tic na dočasné konstanty nebo proměnné.