Vyhlásenie stráže Swift (s príkladmi)

V tomto článku sa naučíte používať strážne vyhlásenie na riadenie toku vykonávania vášho programu.

Príkaz Swift If popisuje, ako môžete vykonávať akcie na základe určitých podmienok (logická hodnota). V tomto článku preskúmame výhody strážneho príkazu over if, ktorý riadi tok programu a píše jednoduchšie a čistejšie kódy.

Vyhlásenie stráže Swift

Hlavné použitie strážneho vyhlásenia je za určitých podmienok preniesť kontrolu programu z rozsahu. Tieto príkazy sú podobné príkazom if, ktoré vykonávajú príkazy na základe určitej podmienky (boolovská hodnota), ale na rozdiel od keby sa príkazy stráže spúšťajú iba vtedy, keď nie sú splnené určité podmienky.

Vyhlásenia vo vnútri stráže musia navyše opustiť rozsah pôsobnosti. Preto musíme s kontrolnými užívateľský program vyhlásenie return, break, continuealebo throwna konci príkazu stráže.

Syntax vyhlásenia o stráži

 strážny výraz else (// príkazy // musia obsahovať riadiaci príkaz: návrat, zlom, pokračovanie alebo hod.) 
  • Výraz je tu boolovský výraz (vracia buď truealebo false).
  • Ak je výraz vyhodnotený na false, guardvykonajú sa príkazy vo vnútri bloku kódu .
  • Ak je výraz vyhodnotený na true, príkazy vo vnútri bloku kódu guardbudú preskočené z vykonania.

Ako funguje vyhlásenie o strážení?

Poznámka: Koniec príkazu stráž musí obsahovať vyhlásenie kontrolné return, break, continuealebo throw.

Príklad 1: Ako funguje vyhlásenie o strážení?

Jednoduché platné vyhlásenie o strážení je uvedené nižšie:

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

Po spustení programu bude výstup:

 Podmienka splnená

Vo vyššie uvedenom programe obsahuje stráž logickú hodnotu true (podmienka je splnená). Pretože strážne príkazy sa spúšťajú iba vtedy, keď nie je splnená podmienka, vyhlásenie vo vnútri stráže sa nevykoná. Preto print("Condition met")sa vykoná a na obrazovke sa splní podmienka výstupov .

Teraz zmeňme podmienku na false ako:

Príklad 2: Vyhlásenie strážcu musí opustiť rozsah

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

Vo vyššie uvedenom programe sa stav stráženia vyhodnotí ako false. print("Condition not met")Malo by sa teda vykonať vyhlásenie vo vnútri else. Dostanete ale chybu, že „ochranný“ orgán nemusí spadnúť, zvážte použitie „návratu“ alebo „hodenia“ na opustenie rozsahu pôsobnosti.

Chybové hlásenie v jednoduchých slovných prostriedkov, je potrebné previesť riadenie programu z výkazu strážnej pomocou return, break, continuealebo throwvyhlásenie. Zatiaľ použijeme return. A keďže returnpríkaz je možné použiť iba vo vnútri funkcie, nad kódom sa chystáme zabaliť funkciu Swift Functions.

Príklad 3: Vyhlásenie stráže vo vnútri funkcie

Môžeme použiť vyhlásenie stráže vnútri vo funkcii v Swifte ako:

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

Keď spustíte vyššie uvedený program, výstup bude:

 Podmienka nesplnená Dobrý deň po volaní funkcie 

Vo vyššie uvedenom programe sa stav stráženia vyhodnotí na false, preto sa vykonajú príkazy vo vnútri strážcu. Prvý príkaz print("Condition not met")vydáva v konzole nesplnenú podmienku .

A príkaz returnukončí vykonávanie funkcie a príkaz print("Hello, after function call")po vykonaní volania funkcie vykoná, čo v konzole vygeneruje Hello after call funkcie .

Príklad 4: Stráž s voliteľnými doplnkami

Vo Swift Optionals sme videli použitie if-letrozbalenia voliteľného príslušenstva. Môžeme však tiež použiť vyhlásenie stráženia namiesto if-letna rozbalenie voliteľnej položky s jednou výhodou. Hlavnou výhodou rozbalenia voliteľného doplnku s ochranným štítom namiesto if-letje, že môžeme zväčšiť rozsah rozbalenej premennej.

Pozrime sa na to v príklade nižšie:

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

Keď spustíte vyššie uvedený program, výstup bude:

Meno je nulové. Nedá sa spracovať

Vo vyššie uvedenom programe môžete vidieť, že teplota rozbalenej hodnoty sa používa mimo rozsah definovaný príkazom guard. Pretože name je definovaný voliteľný a obsahuje nulovú hodnotu, príkazu guard sa nepodarí rozbaliť hodnotu.

Takže vyhlásenia vo vnútri stráže else, ktoré vypíšu Name, sú nulové. Nie je možné spracovať výstup a ukončí funkciu returnpríkazom. Ekvivalentný kód vyššie uvedeného vyhlásenia o strážení 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() 

Oznámenie vyššie, dve vyhlásenia sú platné a vykonávajú rovnakú prácu. Ale pomocou príkazu if-let nemôžete použiť nerozbalenú hodnotu mimo príkazu if-let. Ale pomocou príkazu stráž môžete použiť nerozbalenú hodnotu v celej funkcii.

Príklad 5: Stráž s viacerými podmienkami

Ochranné vyhlásenia môžu tiež reťaziť viac podmienok oddelených čiarkou (,) ako:

 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()

Keď spustíte vyššie uvedený program, výstup bude:

Názov je nulový alebo prázdny reťazec. Nedá sa spracovať

Vo vyššie uvedenom programe obsahuje strážny príkaz dve podmienky oddelené čiarkou.

Prvá podmienka let temp = namerozbalí voliteľnú položku, ktorá sa truev našom prípade vráti, a druhá podmienka temp.count> 0skontroluje, či má rozbalený reťazec viac ako 0 znakov, čo sa falsev našom príklade vyhodnotí .

Preto príkaz vo vnútri strážneho príkazu vykoná príkaz, print("Name is nil or an empty string. Cannot process")ktorého výstupom je Názov, je nula alebo prázdny reťazec. Nie je možné spracovať v konzole a ukončí funkciu returnpríkazom.

Zaujímavé články...