Selles artiklis õpitakse kasutama lüliti juhtlauseid oma programmi käivitamise voo juhtimiseks.
Lüliti lause on ka mitmesugune Swifti juhtlause egif-else, valve jne, mis täidab erinevaid toiminguid erinevate tingimuste alusel.
Lüliti lause ilu on see, et sellega saab väärtust võrrelda mitme võimaliku sobitusmustriga. Seetõttu saab seda kasutada pikkade if… else… if
redelite asendajana, sobitades samal ajal keerukat mustrit.
Lüliti lause süntaks
Lüliti lause süntaks on:
muutuja / avaldise vahetamine (juhtumi väärtus1: // lausete juhtumiväärtus2: // avalduste vaikeväärtus: // avaldused)
Kuidas Swiftis lause vahetamine töötab?
- Lüliti avaldist hinnatakse üks kord.
- See võtab avaldise ja võrdleb seda iga järjestuse väärtusega (Ülemine -> Alumine).
- Kui vaste on olemas, käivitatakse juhtumi sees olev lause ja kogu lüliti lause lõpetab selle täitmise kohe, kui esimene sobitamise lüliti juhtum on lõpule jõudnud.
- Kui juhtumil pole vastet, langeb see järgmisele juhtumile.
- Vaikimisi märksõna määrab käitatava koodi, kui juhtumivastet pole.
Märkus . Iga juhtumi sisu peab sisaldama vähemalt ühte käivitatavat lauset.
Näide 1: Lihtne programm, kasutades lülitilauset
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") )
Ülaltoodud programmi käivitamisel on väljund:
Kolmapäev
Ülalolevas programmis algab switchi lause dayOfWeek väärtuse sobitamisel juhtumiga 1 . Kuna dayOfWeeki väärtus ei ühti esimese juhtumi väärtusega 1, langeb see järgmisele juhtumile, kuni üks vastab.
Kuna juhtum 4 vastab lüliti avaldisele, print("Wednesday")
käivitatakse juhtumi sees olev lause ja lüliti juhtum lõpetatakse. Kui ükski asi sobitada, avaldisega vaikimisi vormistab.
Näide 2: vahetage avaldust koos läbimurdega
Kui kasutate fallthrough
juhtumilauses märksõna, jätkub juht järgmisele juhtumile isegi siis, kui juhtumi väärtus ei klapi lüliti avaldisega.
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") )
Ülaltoodud programmi käivitamisel on väljund:
Kolmapäev Neljapäev
Ülaltoodud programmis täidab juhtum 4 lause print("Wednesday")
ja fallthrough
märksõna jätkub case5-ga . Juhtumi 5print("Thursday")
sees olev lause täidetakse isegi siis, kui juhtum ei sobi lüliti avaldisega. Seetõttu näete konsoolis neljapäeva väljundit .
Näide 3: lülitage lause keerukamate mustritega
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 """) )
Ülaltoodud programmi käivitamisel on väljund:
Programmeerimiskeel: Go Versioon: 10 Staatus: ei leitud
Ülaltoodud programmis sobitame avaldise programmeerimineTuple keel erinevate juhtumitega, nagu allpool:
case (let name,let version) where (version < 0 && name.count < 0)
See juhtum seob lüliti avaldise väärtuse ajutiste konstantide või muutujatega, mida saab kasutada juhtumi põhiosaslet
märksõnaga. Seda nimetatakse väärtuse sidumiseks.
Nendele väärtustele saate tingimusega rakendada kawhere
klauslit. Mitme tingimuse korral saate need liita&&
operaatori abil, nagu ülaltoodud näites.
Kui juhtum ei vasta tingimustele, mis on määratletud kus klausel, ei täideta selles juhtumiplokis olevaid lauseid ja kukutakse järgmise lüliti juhtumi võrdlemiseks läbi.case ("Swift" ,… <4 )
See juhtum sobib dupleksi esimese elemendi stringi literaaliga"Swift"
ja kontrollib ka seda, kas teine element asub ühepoolse vahemiku sees… <4
.case ("Swift" ,4… )
See juhtum sobib dupleksi esimese elemendi stringi literaaliga"Swift"
ja kontrollib ka seda, kas teine element asub ühepoolse vahemiku sees4…
.case (let name, let version)
See juhtum seob rühmade kõik väärtused ajutiste konstantide või muutujatega.