Hurtig beskyttelseserklæring (med eksempler)

I denne artikel lærer du at bruge beskyttelseserklæring til at kontrollere strømmen af ​​dit programs udførelse.

Swift If Statement beskriver, hvordan du kan udføre handlinger baseret på en bestemt tilstand (boolsk værdi). I denne artikel vil vi undersøge fordelene ved vagtudtalelse over, om udsagn til at styre programflowet og skrive mere enklere og ren kode.

Swift Guard-erklæring

Den væsentligste anvendelse af beskyttelseserklæringen er at overføre programstyring uden for et anvendelsesområde på visse betingelser. Disse udsagn er ens, hvis udsagn, der udfører udsagn baseret på en bestemt betingelse (boolsk værdi), men i modsætning til hvis kører vagtsætningerne kun, når visse betingelser ikke er opfyldt.

Desuden skal udsagn inde i vagten komme ud af omfanget. Derfor er vi nødt til brugerprogram kontrolsætninger return, break, continueeller throwved afslutningen af vagten erklæring.

Syntaks for vagtudtalelse

 beskyttelsesudtryk andet (// udsagn // skal indeholde en kontrolerklæring: returnere, bryde, fortsætte eller kaste.) 
  • Her er udtryk et boolsk udtryk (returnerer enten trueeller false).
  • Hvis udtrykket evalueres til false, guardudføres udsagn inde i kodeblokken .
  • Hvis udtrykket evalueres til true, guardspringes udsagn inde i kodeblokken over fra udførelse.

Hvordan fungerer vagtudtalelse?

Bemærk: Afslutningen på vagt opgørelse skal indeholde en kontrol erklæring return, break, continueeller throw.

Eksempel 1: Hvordan fungerer vagtudtalelse?

En simpel gyldig beskyttelseserklæring er som nedenfor:

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

Når du kører programmet, vil output være:

 Betingelse opfyldt

I ovenstående program indeholder vagt en boolsk værdi sand (betingelse er opfyldt). Da vagtudtalelser kun kører, når betingelsen ikke er opfyldt, udføres udsagnet inde i vagt ikke. Derfor print("Condition met")udføres og output betingelse opfyldt på skærmen.

Lad os nu ændre betingelsen til falsk som:

Eksempel 2: vagtudtalelse skal forlade omfanget

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

I ovenstående program evalueres beskyttelsestilstanden til false. Så erklæringen print("Condition not met")inde i andet skal udføres. Men du får en fejl, der siger, at 'vagt' krop muligvis ikke falder igennem, overvej at bruge et 'retur' eller 'kaste' for at forlade omfanget.

Fejlmeddelelsen i enkle ord betyder, du har brug for at overføre programmet kontrol fra vagten erklæring hjælp return, break, continueeller throwudsagn. For nu skal vi bruge return. Og da returnudsagn kun kan bruges inde i en funktion, vil vi pakke oven over kode i Swift-funktioner.

Eksempel 3: beskyttelseserklæring inde i en funktion

Vi kan bruge beskyttelseserklæringen inde i en funktion 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 kører ovenstående program, vil output være:

 Betingelsen ikke opfyldt Hej efter funktionsopkald 

I ovenstående program evalueres beskyttelsestilstanden til false, hvorfor udsagnene inde i vagten udføres. Den første sætning print("Condition not met")udsender betingelse, der ikke er opfyldt i konsollen.

Og erklæringen returnafslutter udførelsen af ​​en funktion, og udsagnet print("Hello, after function call")efter, at funktionsopkaldet udføres, som udsender Hello efter funktionsopkald i konsollen.

Eksempel 4: Vagt med ekstraudstyr

Vi har set i Swift Optionals brugen af if-letat pakke et valgfrit ud. Vi kan dog også bruge beskyttelseserklæring i stedet if-letfor at pakke ud en valgfri med en fordel. Den største fordel ved at udpakke en valgfri med vagt i stedet for if-leter, at vi kan øge omfanget af den uudpakkede variabel.

Lad os 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 kører ovenstående program, vil output være:

Navnet er nul. Kan ikke behandle

I ovenstående program kan du se, at den udpakkede værditemp bruges uden for det anvendelsesområde, der er defineret af beskyttelseserklæringen. Da navnet er defineret valgfrit og indeholder nulværdi, kan beskyttelsessætningen ikke pakke værdien ud.

Så udførelserne fra vagten ellers udfører, hvilke udskrifter Navnet er nul. Kan ikke behandle i output og afslutter funktionen med returnsætning. Den ækvivalente kode for ovenstående beskyttelseserklæring hvis-ellers erklæring 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() 

Bemærk ovenfor to udsagn er begge gyldige og udfører det samme job. Men ved hjælp af if-let-sætning kan du ikke bruge den uindpakkede værdi uden for if-let-sætningen. Men med vagtudtalelse kan du bruge den uindpakkede værdi gennem funktionen.

Eksempel 5: Vagt med flere forhold

Vagtudtalelser kan også kæde flere betingelser adskilt af 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 kører ovenstående program, vil output være:

Navnet er nul eller en tom streng. Kan ikke behandle

I ovenstående program indeholder beskyttelseserklæringen to betingelser adskilt med komma.

Den første betingelse let temp = nameudpakker en valgfri, der vender tilbage truei vores tilfælde, og den anden betingelse temp.count> 0kontrollerer, om den uudpakkede streng har mere end 0 tegn, hvilket evalueres til falsei vores eksempel.

Derfor udfører erklæringen inde i vagtudtalelsen en erklæring, print("Name is nil or an empty string. Cannot process")der udsender Navnet, er nul eller en tom streng. Kan ikke behandle i konsollen og afslutter funktionen med returnudsagn.

Interessante artikler...