Prohlášení Swift Guard (s příklady)

V tomto článku se naučíte používat strážní příkaz k řízení toku provádění vašeho programu.

Příkaz Swift If popisuje, jak můžete provádět akce na základě určité podmínky (logická hodnota). V tomto článku prozkoumáme výhody strážního příkazu over if pro řízení toku programu a zápis jednoduššího a čistého kódu.

Prohlášení společnosti Swift Guard

Hlavní použití strážného prohlášení je za určitých podmínek přenést kontrolu programu z rozsahu. Tyto příkazy jsou podobné příkazům if, které provádějí příkazy na základě určité podmínky (logická hodnota), ale na rozdíl od if se příkazy guard spouštějí pouze tehdy, když nejsou splněny určité podmínky.

Kromě toho musí výroky uvnitř stráže opustit rozsah. Proto musíme s kontrolními uživatelský program prohlášení return, break, continuenebo throwna konci příkazu stráže.

Syntaxe prohlášení stráže

 strážný výraz else (// příkazy // musí obsahovat kontrolní příkaz: návrat, konec, pokračování nebo hod.) 
  • Zde je výraz booleovský výraz (vrací buď truenebo false).
  • Pokud je výraz vyhodnocen na false, budou provedeny příkazy uvnitř bloku kódu guard.
  • Pokud je výraz vyhodnocen na true, příkazy uvnitř bloku kódu guardjsou přeskočeny z provedení.

Jak funguje strážní prohlášení?

Poznámka: Konec příkazu stráž musí obsahovat prohlášení kontrolní return, break, continuenebo throw.

Příklad 1: Jak funguje strážní prohlášení?

Jednoduché platné prohlášení o stráži je uvedeno níže:

 guard true else ( print("Condition not met") ) print("Condition met") 

Když spustíte program, výstup bude:

 Podmínka splněna

Ve výše uvedeném programu obsahuje stráž logickou hodnotu true (podmínka je splněna). Vzhledem k tomu, že strážní příkazy běží pouze v případě, že podmínka není splněna, příkaz uvnitř strážce se neprovede. Proto print("Condition met")se provede a na obrazovce se splní podmínka výstupu .

Nyní změňme podmínku na false jako:

Příklad 2: Prohlášení strážce musí opustit obor

 guard false else ( print("Condition not met") ) print("Condition met") 

Ve výše uvedeném programu je stav stráže vyhodnocen jako false. Takže příkaz print("Condition not met")uvnitř else by měl být proveden. Zobrazí se vám ale chyba, že tělo strážného nemusí spadnout, zvažte použití možnosti „návrat“ nebo „hod“ k opuštění oboru.

Chybová zpráva v jednoduchých slovních prostředků, je třeba převést řízení programu z výkazu strážní pomocí return, break, continuenebo throwprohlášení. Prozatím použijeme return. A protože returnpříkaz lze použít pouze uvnitř funkce, zabalíme výše uvedený kód do funkcí Swift.

Příklad 3: Ochranný příkaz uvnitř funkce

Můžeme použít příkaz guard uvnitř funkce ve Swiftu jako:

 func someFunction() ( guard false else ( print("Condition not met") return ) print("Condition met") ) someFunction() print("Hello after function call") 

Když spustíte výše uvedený program, výstup bude:

 Podmínka nesplněna Dobrý den po volání funkce 

Ve výše uvedeném programu se podmínka stráže vyhodnotí na false, proto se provádějí příkazy uvnitř stráže. První příkaz print("Condition not met")vydává podmínku, která v konzole není splněna .

A příkaz returnukončí provádění funkce a příkaz print("Hello, after function call")po provedení volání funkce provede výstup Hello po volání funkce v konzole.

Příklad 4: Stráž s volitelnými doplňky

Ve Swift Optionals jsme viděli použití if-letrozbalit volitelný doplněk. Můžeme však také použít strážný příkaz místo if-letpro rozbalení volitelného s jednou výhodou. Hlavní výhodou rozbalení volitelného s ochranou namísto if-letje, že můžeme zvětšit rozsah rozbalené proměnné.

Uvidíme to v příkladu níže:

 func changeOptionalStringToUpperCase() ( var name:String? guard let temp = name else ( print("Name is nil. Cannot process") return ) print("Uppercased:(temp.uppercased())") ) changeOptionalStringToUpperCase() 

Když spustíte výše uvedený program, výstup bude:

Jméno je nulové. Nelze zpracovat

Ve výše uvedeném programu můžete vidět, že teplota bez zabalené hodnoty se používá mimo rozsah definovaný příkazem guard. Vzhledem k tomu, že název je definován volitelně a obsahuje nulovou hodnotu, příkaz guard nerozbalí hodnotu.

Takže příkazy uvnitř stráže else provedou, které vytiskne Name, je nulové. Nelze zpracovat výstup a ukončí funkci returnpříkazem. Ekvivalentní kód výše uvedeného prohlášení strážného if-else je:

 func changeOptionalStringToUpperCase() ( var name:String? if let temp = name ( print("Uppercased:(temp.uppercased())") ) else ( print("Name is nil. Cannot process") return ) //how to access temp here?? Solution:Use Guard ) changeOptionalStringToUpperCase() 

Všimněte si, že výše uvedená dvě prohlášení jsou platná a dělají stejnou práci. Ale pomocí příkazu if-let nemůžete použít nerozbalenou hodnotu mimo příkaz if-let. Ale s příkazem stráž můžete použít nerozbalenou hodnotu prostřednictvím funkce out.

Příklad 5: Stráž s více podmínkami

Prohlášení strážce mohou také řetězit více podmínek oddělených čárkou (,) jako:

 func changeOptionalStringToUpperCase() ( var name:String? = "" guard let temp = name , temp.count> 0 else ( print("Name is nil or an empty string. Cannot process") return ) print("Uppercased:(temp.uppercased())") ) changeOptionalStringToUpperCase()

Když spustíte výše uvedený program, výstup bude:

Název je nulový nebo prázdný řetězec. Nelze zpracovat

Ve výše uvedeném programu obsahuje příkaz guard dvě podmínky oddělené čárkou.

První podmínka let temp = namerozbalí volitelný prvek, který se truev našem případě vrátí, a druhá podmínka temp.count> 0zkontroluje, zda má rozbalený řetězec více než 0 znaků, což se falsev našem příkladu vyhodnotí .

Proto příkaz uvnitř příkazu guard provádí příkaz, print("Name is nil or an empty string. Cannot process")jehož výstupem Name je nula nebo prázdný řetězec. Nelze zpracovat v konzole a ukončí funkci returnpříkazem.

Zajímavé články...