Izjava brze straže (s primjerima)

U ovom ćete članku naučiti koristiti statement naredbu za kontrolu tijeka izvršavanja vašeg programa.

Izjava Swift If opisuje kako možete izvoditi radnje na temelju određenog uvjeta (logička vrijednost). U ovom ćemo članku istražiti prednosti izjave gard nad naredbom if za kontrolu tijeka programa i pisanje jednostavnijeg i čistijeg koda.

Izjava brze straže

Glavna upotreba zaštitne izjave je prenošenje nadzora nad programom izvan opsega pod određenim uvjetima. Ovi su izrazi slični izrazima if koji izvršavaju izraze na temelju određenog uvjeta (logička vrijednost), ali za razliku od if, izrazi čuvara pokreću se samo kada neki uvjeti nisu zadovoljeni.

Štoviše, izjave unutar straže moraju izaći iz opsega. Stoga, moramo kontrole korisnik programa izjavama return, break, continueili throwna kraju straže i gubitka.

Sintaksa izjave straže

 izraz čuvara else (// izrazi // moraju sadržavati kontrolni izraz: povratak, prekid, nastavak ili bacanje.) 
  • Ovdje je izraz logički izraz (vraća ili trueili false).
  • Ako se izraz procjenjuje na false, guardizvršavaju se izrazi unutar bloka koda od .
  • Ako se izraz procijeni na true, naredbe unutar bloka koda guardpreskaču se iz izvršavanja.

Kako djeluje izjava čuvara?

Napomena: Kraj čuvara izjava mora sadržavati kontrole izjavu return, break, continueili throw.

Primjer 1: Kako funkcionira izjava čuvara?

Jednostavna valjana izjava čuvara je kako je dolje navedeno:

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

Kada pokrenete program, izlaz će biti:

 Uvjet ispunjen

U gornjem programu čuvar sadrži logičku vrijednost true (uvjet je zadovoljen). Budući da se izjave zaštitnika izvode samo kada uvjet nije zadovoljen, izjava unutar zaštite ne izvršava se. Zbog toga print("Condition met")se izvršava i na ekranu se prikazuje Uvjet zadovoljen .

Sada promijenimo uvjet u false kao:

Primjer 2: izjava čuvara mora izaći iz opsega

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

U gore navedenom programu stanje čuvara procjenjuje na false. Dakle, izjava print("Condition not met")unutar else trebala bi se izvršiti. Ali dobit ćete pogrešku s porukom da tijelo "čuvara" možda neće propasti, razmislite o korištenju "return" ili "bacanje" za izlaz iz opsega.

Poruka o pogrešci u jednostavnim riječ znači, morate prenijeti kontrolu programa iz izjave straže, koristeći return, break, continueili throwizjave. Za sada ćemo koristiti return. A budući da se returnnaredba može koristiti samo unutar funkcije, gornji ćemo kôd umotati u brze funkcije.

Primjer 3: iskaz čuvara unutar funkcije

Izjavu garda možemo koristiti unutar funkcije u Swiftu kao:

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

Kada pokrenete gornji program, izlaz će biti:

 Uvjet nije zadovoljen Pozdrav nakon poziva funkcije 

U gornjem programu, stanje zaštitnika procjenjuje na false, stoga se izvršavaju izrazi unutar zaštitnika. Prva izjava print("Condition not met")daje Uvjet nije ispunjen u konzoli.

A izjava returnzavršava izvršavanje funkcije i naredba print("Hello, after function call")nakon izvršenja poziva funkcije koja u konzoli izbacuje Hello nakon poziva funkcije .

Primjer 4: Straža s opcionalima

U Swift Optionals vidjeli smo upotrebu if-letodmotavanja neobaveznog. Međutim, if-letumjesto odmotavanja neobaveznog materijala s jednom prednošću možemo koristiti i izjavu čuvara . Glavna prednost odmotavanja opcionalnog sa štitnikom umjesto if-letda možemo povećati opseg odmotane varijable.

Pogledajmo ovo u donjem primjeru:

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

Kada pokrenete gornji program, izlaz će biti:

Ime je nil. Nije moguće obraditi

U gore navedenom programu možete vidjeti da se raspakirana vrijednost privremene vrijednosti koristi izvan opsega definiranog izrazom guard. Budući da je ime definirano kao neobavezno i ​​sadrži vrijednost nil, izraz naredbe ne uspijeva otpakirati vrijednost.

Dakle, izrazi unutar straže else izvršavaju koji ispis Name je nil. Ne može se obraditi u izlazu i završava funkciju returnizrazom. Ekvivalentni kod gore navedene izjave čuvara 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() 

Obavijest da su dvije izjave valjane i rade isti posao. Ali pomoću if-let izjave ne možete koristiti nerazmotanu vrijednost izvan if-let naredbe. Ali s izjavom čuvara možete iskoristiti otpakiranu vrijednost kroz out funkciju.

Primjer 5: Straža s više uvjeta

Izjave čuvara mogu također povezati više uvjeta odvojenih zarezom (,) kao:

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

Kada pokrenete gornji program, izlaz će biti:

Ime je nil ili je prazan niz. Nije moguće obraditi

U gore navedenom programu, izjava čuvara sadrži dva uvjeta odvojena zarezom.

Prvi uvjet let temp = nameotvara neobavezno što se trueu našem slučaju vraća, a drugi uvjet temp.count> 0provjerava ima li nerazmotani niz više od 0 znakova, što se procjenjuje falseu našem primjeru.

Prema tome, izjava unutar naredbe čuvara izvršava naredbu print("Name is nil or an empty string. Cannot process")koja izlazi Ime je nil ili prazan niz. Ne može se obraditi u konzoli i završava funkciju returnizrazom.

Zanimljivi članci...