Izjava o hitrem stikalu (z primeri)

V tem članku se boste naučili uporabljati stavke za nadzor stikal za nadzor poteka izvajanja vašega programa.

Izjava o preklopu je tudi različica stavka Swift control egif-else, guard itd., Ki izvaja različna dejanja glede na različne pogoje.

Lepota stavka switch je, da lahko primerja vrednost z več možnimi vzorci ujemanja. Zato se lahko uporablja kot nadomestek za dolge if… else… iflestve, medtem ko se ujema s kompleksnim vzorcem.

Sintaksa stavka switch

Sintaksa stavka switch je:

 preklopi spremenljivko / izraz (vrednost primera1: // stavki vrednost primera2: // stavki privzeto: // stavki)

Kako deluje izjava o preklopu v Swiftu?

  • Izraz stikala se ovrednoti enkrat.
  • Vzame izraz in primerja z vsako vrednostjo primera v vrstnem redu (zgoraj -> spodaj).
  • Če obstaja ujemanje, se stavek znotraj ohišja izvede in celoten stavek preklopa zaključi svoje izvajanje takoj, ko je končan prvi primerljiv primer preklopa.
  • Če primera ni, se preide na naslednji primer.
  • Privzeta ključna beseda določa kodo, ki se zažene, če ni ujemanja z velikimi črkami.

Opomba : Telo vsakega primera mora vsebovati vsaj en izvršljiv stavek.

Primer 1: Preprost program z uporabo stavka Switch

 let dayOfWeek = 4 switch dayOfWeek ( case 1: print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") ) 

Ko zaženete zgornji program, bo rezultat:

 Sreda

V zgornjem programu se stavek stikala začne z ujemanjem vrednosti dayOfWeek s 1. primerom . Ker se vrednost dayOfWeek ne ujema s prvo vrednostjo primera 1, pada v naslednji primer, dokler se ena ne ujema.

Ker se primer 4 ujema s preklopnim izrazom, se stavek print("Wednesday")v ohišju izvrši in preklopni primer zaključi. Če se ne ujema noben primer, se izvrši stavek znotraj privzete vrednosti .

Primer 2: Izjava o preklopu s padcem

Če fallthroughv stavku primera uporabite ključno besedo, se nadzor nadaljuje na naslednji primer, tudi če se vrednost primera ne ujema z izrazom stikala.

 let dayOfWeek = 4 switch dayOfWeek ( case 1 : print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") fallthrough case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") ) 

Ko zaženete zgornji program, bo rezultat:

 Sreda četrtek

V zgornjem programu primer 4 izvede stavek print("Wednesday")in fallthroughključna beseda nadaljuje na primer5 . Stavek print("Thursday")v primeru 5 se izvrši, tudi če se črka ne ujema z izrazom stikala. Zato lahko v konzoli vidite izhod v četrtek .

Primer 3: Izjava o zamenjavi z bolj zapletenimi vzorci

 let programmingLanguage = (name: "Go", version: 10) switch programmingLanguage ( case (let name,let version) where (version < 0 && name.count < 0) : print("Invalid input") case ("Swift",let version) where version == 4: print("Found latest version of Swift") case ("Swift" ,… <4 ): print("Found older version of swift)") case ("Swift" ,4… ) : print("Swift version greater than 4 is not released yet") case ("Taylor Swift",30) : print("OMG. This is Taylor swift") case (let name, let version): print(""" Programming Language:(name) Version: (version) Status: Not found """) ) 

Ko zaženete zgornji program, bo rezultat:

 Programski jezik: Go Različica: 10 Stanje: Ni najdeno

V zgornjem programu primerjamo izraz programsko jezikovno vrsto z različnimi primeri, kot spodaj:

  • case (let name,let version) where (version < 0 && name.count < 0)
    Ta primer veže vrednost izraza stikala na začasne konstante ali spremenljivke za uporabo v telesu primera s letključno besedo. To je znano kot vezava vrednosti.
    Pogoj za te vrednosti lahko uporabite tudi s whereklavzulo. Za večkratne pogoje jih lahko združite z &&operatorjem, kot je v zgornjem primeru.
    Če primer ne izpolnjuje pogoja, določenega znotraj stavka where, stavki znotraj tega bloka primerov ne zaženejo in padejo v primerjavo naslednjega primera stikala.
  • case ("Swift" ,… <4 )
    Ta primer ujema prvi element tuple z nizom literal "Swift"in tudi preveri, ali je drugi element znotraj enostranskega obsega … <4.
  • case ("Swift" ,4… )
    Ta primer ujema prvi element tuple z nizom literal "Swift"in tudi preveri, ali je drugi element znotraj enostranskega obsega 4… .
  • case (let name, let version)
    Ta primer veže vse vrednosti nabora na začasne konstante ali spremenljivke.

Zanimive Članki...