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… if
lé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 fallthrough
kulcsszó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 fallthrough
kulcsszó 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ébenlet
kulcsszóval legyenek. Ez az értékkötés néven ismert.
A feltételeket ezekre az értékekrewhere
zá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-e4…
.case (let name, let version)
Ez az eset a sorrend összes értékét az ideiglenes konstansokhoz vagy változókhoz köti.