Gyors kapcsoló utasítás (példákkal)

Ebben a cikkben megtanulja használni a kapcsolóvezérlő utasításokat a program végrehajtásának folyamatának szabályozásához.

A switch utasítás egyben számos Swift vezérlő utasítás egif-else, guard stb., Amely különböző körülmények alapján különböző műveleteket hajt végre.

A kapcsoló állításának szépsége, hogy összehasonlíthat egy értéket több lehetséges egyezési mintával. Ezért felhasználható hosszú if… else… iflétrák helyettesítésére, miközben megfelel az összetett mintának.

A kapcsoló utasítás szintaxisa

A switch utasítás szintaxisa:

 változó / kifejezés váltása (case value1: // utasítások case value2: // utasítások alapértelmezett: // utasítások)

Hogyan működik a SWIFT-utasítás váltása?

  • A kapcsoló kifejezést egyszer értékelik.
  • Fogja a kifejezést, és összehasonlítja az egyes esetek értékével a sorrendben (Felső -> Alsó).
  • Ha van egyezés, akkor az ügy belsejében lévő utasítás végrehajtásra kerül, és a teljes kapcsoló utasítás befejezi a végrehajtását, amint az első egyező kapcsoló eset befejeződik.
  • Ha nincs egyezés az esetre, a következő esetre esik.
  • Az alapértelmezett kulcsszó adja meg a futtatni kívánt kódot, ha nincs esetegyezés.

Megjegyzés : Minden eset törzsének tartalmaznia kell legalább egy futtatható utasítást.

1. példa: Egyszerű program a Switch Statement használatával

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

A fenti program futtatásakor a kimenet a következő lesz:

 szerda

A fenti programban a switch utasítás a dayOfWeek érték és az 1. eset egyeztetésével kezdődik . Mivel a dayOfWeek értéke nem egyezik meg az első eset értéke 1-vel, a következő esetre esik, amíg egyezik.

Mivel a 4. eset megegyezik a kapcsoló kifejezéssel, print("Wednesday")az eseten belüli utasítás végrehajtódik és a kapcsoló eset befejeződik. Ha egyik eset sem egyezik, akkor az alapértelmezett utasítás végrehajtódik.

2. példa: Váltson állítást áttöréssel

Ha a fallthroughkulcsszót használja az esetkivonatban, akkor a vezérlő folytatja a következő esetet, még akkor is, ha az esetérték nem egyezik a kapcsoló kifejezéssel.

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

A fenti program futtatásakor a kimenet a következő lesz:

 szerda csütörtök

A fenti programban a 4. eset végrehajtja az utasítást, print("Wednesday")és a fallthroughkulcsszó továbbhalad az 5. esetig . Az 5. esetenprint("Thursday") belüli utasítás akkor is végrehajtódik, ha az eset nem egyezik a switch kifejezéssel. Ezért a csütörtöki kimenetet láthatja a konzolon.

3. példa: Váltson állítást összetettebb mintákkal

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

A fenti program futtatásakor a kimenet a következő lesz:

 Programozási nyelv: Go Verzió: 10 Állapot: Nem található

A fenti programban a tuple típusú nyelvet különböző esetekkel hasonlítjuk össze az alábbiakkal:

  • case (let name,let version) where (version < 0 && name.count < 0)
    Ez az eset a kapcsoló kifejezés értékét ideiglenes konstansokhoz vagy változókhoz köti, hogy az eset törzsében letkulcsszóval legyenek. Ez az értékkötés néven ismert.
    A feltételeket ezekre az értékekre wherezáradékkal is alkalmazhatja . Többféle feltétel esetén összefűzheti őket az &&operátor segítségével , a fenti példában leírtak szerint.
    Ha az eset nem felel meg a clause belsejében meghatározott feltételnek, akkor az adott blokkban lévő utasítások nem hajtódnak végre, és átesnek a következő kapcsoló eset összehasonlításához.
  • case ("Swift" ,… <4 )
    Ez az eset egybevágja a tuple első elemet a literál karakterlánccal, "Swift"és azt is ellenőrzi, hogy a második elem az egyoldalú tartományon belül van-e … <4.
  • case ("Swift" ,4… )
    Ez az eset egybevágja a tuple első elemet a literál karakterlánccal, "Swift"és azt is ellenőrzi, hogy a második elem az egyoldalú tartományon belül van-e 4… .
  • case (let name, let version)
    Ez az eset a sorrend összes értékét az ideiglenes konstansokhoz vagy változókhoz köti.

érdekes cikkek...