Rask vaktuttalelse (med eksempler)

I denne artikkelen vil du lære å bruke vaktuttalelse for å kontrollere flyten av programutførelsen.

Swift If Statement beskriver hvordan du kan utføre handlinger basert på visse forhold (boolsk verdi). I denne artikkelen vil vi utforske fordelene med vaktuttalelse over om uttalelse for å kontrollere programflyten og skrive mer enklere og ren kode.

Swift Guard-uttalelse

Hovedbruken av vaktuttalelse er å overføre programkontroll utenfor et omfang under visse forhold. Disse utsagnene er like med hvis uttalelser som utfører uttalelser basert på visse betingelser (boolsk verdi), men i motsetning til hvis, går vaktuttalelsene bare når visse betingelser ikke er oppfylt.

Videre må uttalelser inne i vakta komme ut av omfanget. Derfor må vi bruker program kontroll uttalelser return, break, continueeller throwpå slutten av vakten uttalelse.

Syntaks for vaktuttalelse

 vaktuttrykk ellers (// uttalelser // må inneholde en kontrolluttalelse: returnere, bryte, fortsette eller kaste.) 
  • Her er uttrykk et boolsk uttrykk (returnerer enten trueeller false).
  • Hvis uttrykket blir evaluert til false, blir utsagn i kodeblokken guardutført.
  • Hvis uttrykket blir evaluert til true, guardhoppes utsagn i kodeblokken av fra utførelse.

Hvordan fungerer vakterklæring?

Merk: Slutten av vakt uttalelsen må inneholde en kontroll utsagn return, break, continueeller throw.

Eksempel 1: Hvordan vaktuttalelse fungerer?

En enkel gyldig vaktuttalelse er som nedenfor:

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

Når du kjører programmet, vil utdataene være:

 Tilstand oppfylt

I det ovennevnte programmet inneholder vakt en boolsk verdi sann (betingelsen er oppfylt). Siden vaktuttalelser bare kjører når vilkåret ikke er oppfylt, blir ikke utsagnet inne i vakt utført. Derfor print("Condition met")er utført og utgangsbetingelser oppfylt på skjermen.

La oss nå endre tilstanden til falsk som:

Eksempel 2: vaktuttalelse må gå ut av omfanget

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

I programmet ovenfor evalueres vakttilstanden til false. Så uttalelsen print("Condition not met")i annet skal utføres. Men du vil få en feilmelding som sier at "vakt" ikke faller gjennom, bør du vurdere å bruke "retur" eller "kaste" for å gå ut av omfanget.

Feilmeldingen i enkle ordet betyr, må du overføre program kontroll fra vakt setning med return, break, continueeller throwuttalelser. For nå skal vi bruke return. Og siden returnuttalelse bare kan brukes i en funksjon, skal vi pakke over koden i Swift Functions.

Eksempel 3: vaktuttalelse inne i en funksjon

Vi kan bruke vaktmeldingen inne i en funksjon i Swift som:

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

Når du kjører programmet ovenfor, vil utdataene være:

 Betingelsen ikke oppfylt Hei etter funksjonsanrop 

I det ovennevnte programmet evalueres vakttilstanden til false, og derfor utføres uttalelsene inne i vakta. Den første setningen print("Condition not met")gir ut Betingelsen ikke oppfylt i konsollen.

Og uttalelsen returnavslutter utførelsen av en funksjon og uttalelsen print("Hello, after function call")etter at funksjonssamtalen utføres som sender ut Hello etter funksjonsanrop i konsollen.

Eksempel 4: Vakt med tilleggsutstyr

Vi har sett i Swift Optionals bruken av if-letå pakke ut et valgfritt. Imidlertid kan vi også bruke vaktuttalelse i stedet if-letfor å pakke ut en valgfri med en fordel. Den største fordelen med å pakke ut et valgfritt med vakt i stedet for if-leter at vi kan øke omfanget av den uåpnede variabelen.

La oss se dette i eksemplet nedenfor:

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

Når du kjører programmet ovenfor, vil utdataene være:

Navnet er null. Kan ikke behandle

I det ovennevnte programmet kan du se at den uåpnede verditempen brukes utenfor omfanget som er definert av vaktuttalelse. Siden navnet er definert valgfritt og inneholder nullverdi, klarer ikke vaktuttalelsen å pakke ut verdien.

Så, uttalelsene på vakt ellers utfører hvilke utskrifter Navnet er null. Kan ikke behandle i utgangen og avslutter funksjonen med returnuttalelse. Tilsvarende kode for ovennevnte vaktuttalelse hvis ellers uttalelse er:

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

Merknad over to utsagn er begge gyldige og gjør den samme jobben. Men ved bruk av if-let-setning kan du ikke bruke den uåpnede verdien utenfor if-let-setningen. Men med vaktuttalelse kan du bruke den uåpnede verdien gjennom funksjonen.

Eksempel 5: Vakt med flere forhold

Vaktuttalelser kan også kjede flere forhold atskilt med komma (,) som:

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

Når du kjører programmet ovenfor, vil utdataene være:

Navnet er null eller en tom streng. Kan ikke behandle

I ovennevnte program inneholder vaktuttalelsen to forhold atskilt med komma.

Den første betingelsen let temp = namepakker ut et valgfritt som returnerer truei vårt tilfelle, og den andre tilstanden temp.count> 0sjekker om den uåpnede strengen har mer enn 0 tegn som evalueres til falsei vårt eksempel.

Derfor kjører utsagnet i vaktuttalelsen uttalelse print("Name is nil or an empty string. Cannot process")som sender ut Navnet er null eller en tom streng. Kan ikke behandle i konsollen og avslutter funksjonen med returnuttalelse.

Interessante artikler...