Tässä artikkelissa opit käyttämään kytkimen ohjauslausekkeita ohjaamaan ohjelman suorituksen kulkua.
Kytkinlauseke on myös erilaisia Swift-ohjauslausekkeita egif-else, guard jne., Joka suorittaa erilaisia toimintoja eri olosuhteiden perusteella.
Kytkinlausunnon kauneus on, että se voi verrata arvoa useisiin mahdollisiin vastaavuuksiin. Siksi sitä voidaan käyttää pitkien if… else… if
tikkaiden korvikkeena samalla kun ne sopivat monimutkaiseen kuvioon.
Kytkinlausekkeen syntakse
Kytkinlausekkeen syntaksi on:
vaihtaa muuttujaa / lauseketta (tapausarvo1: // lauseet tapausarvo2: // lauseet oletus: // lauseet)
Kuinka Swift-lauseenvaihto toimii?
- Kytkimen ilmaisu arvioidaan kerran.
- Se ottaa lausekkeen ja vertaa sitä kunkin järjestysarvon kanssa (Yläosa -> Alareuna).
- Jos vastaavuus on olemassa, tapauksen sisällä oleva käsky suoritetaan ja koko kytkinlauseke suorittaa suorituksen heti, kun ensimmäinen vastaava kytkentätapa on valmis.
- Jos tapausta ei löydy, se kuuluu seuraavaan tapaukseen.
- Oletusavainsana määrittää koodin, joka suoritetaan, jos kirjainkokoa ei löydy.
Huomaa : Jokaisen tapauksen rungossa on oltava vähintään yksi suoritettava käsky.
Esimerkki 1: Yksinkertainen ohjelma, joka käyttää Switch Statementia
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") )
Kun suoritat yllä olevan ohjelman, tulos on:
keskiviikko
Yllä olevassa ohjelmassa kytkinlauseke alkaa sovittamalla dayOfWeek-arvo tapaukseen 1 . Koska dayOfWeek-arvo ei vastaa ensimmäisen tapauksen arvoa 1, se laskee seuraavaan tapaukseen, kunnes yksi vastaa.
Koska tapaus 4 vastaa kytkinlauseketta, print("Wednesday")
tapauksen sisällä oleva käsky suoritetaan ja kytkentätapa päättyy. Jos yhtään tapausta ei löytynyt, oletusarvoinen lause suoritetaan.
Esimerkki 2: Vaihda lauseen läpimurtoa
Jos käytät fallthrough
avainsanaa tapauslausekkeen sisällä, ohjaus etenee seuraavaan tapaukseen, vaikka tapausarvo ei olisikaan kytkinlausekkeen kanssa.
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") )
Kun suoritat yllä olevan ohjelman, tulos on:
keskiviikko torstai
Edellä olevassa ohjelmassa tapaus 4 suorittaa lausunnon print("Wednesday")
ja fallthrough
avainsana etenee tapaukseen 5 . Tapaus 5: nprint("Thursday")
sisäinen lause suoritetaan, vaikka tapaus ei täsmää kytkinlausekkeen kanssa. Siksi näet lähdön torstaina konsolissa.
Esimerkki 3: Vaihda lauseen monimutkaisemmilla kuvioilla
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 """) )
Kun suoritat yllä olevan ohjelman, tulos on:
Ohjelmointikieli: Go Versio: 10 Tila: Ei löydy
Yllä olevassa ohjelmassa sovitamme lausekkeen ohjelmointikielen kielen eri tapauksiin seuraavasti:
case (let name,let version) where (version < 0 && name.count < 0)
Tämä tapaus sitoo kytkimen lausekkeen arvon väliaikaisiin vakioihin tai muuttujiin, joita käytetään kotelon rungossalet
avainsanalla. Tätä kutsutaan arvon sitomiseksi.
Voit myös käyttää ehtoa näihin arvoihinwhere
lausekkeella. Useissa olosuhteissa voit liittää ne&&
operaattorilla kuten yllä olevassa esimerkissä.
Jos tapaus ei täytä lausekkeen sisällä määriteltyä ehtoa, kyseisen tapauslohkon sisällä olevat lauseet eivät toteudu ja kaatuvat vertaamaan seuraavaa kytkentätapausta.case ("Swift" ,… <4 )
Tämä tapaus sovittaa ensimmäisen elementin ja merkkijonon literaalin"Swift"
ja tarkistaa myös, onko toinen elementti yksipuolisen alueen sisällä… <4
.case ("Swift" ,4… )
Tämä tapaus sovittaa ensimmäisen elementin ja merkkijonon literaalin"Swift"
ja tarkistaa myös, onko toinen elementti yksipuolisen alueen sisällä4…
.case (let name, let version)
Tämä tapaus sitoo kaikki joukon arvot väliaikaisiin vakioihin tai muuttujiin.