I den här artikeln lär du dig att använda switchkontrolluttalanden för att styra flödet av programmets körning.
Växlingsuttalandet är också en mängd olika Swift-kontrolluttalanden, t.ex. annat, skydd etc., som utför olika åtgärder baserat på olika förhållanden.
Det vackra med switch-uttalandet är att det kan jämföra ett värde med flera möjliga matchande mönster. Därför kan den användas som ersättning för långa if… else… if
stegar samtidigt som den matchar ett komplext mönster.
Syntax för switch-uttalande
Syntaksen för switch-uttalandet är:
växla variabel / uttryck (fallvärde1: // uttalanden fallvärde2: // uttalanden standard: // uttalanden)
Hur fungerar Switch Statement i Swift?
- Växlingsuttrycket utvärderas en gång.
- Det tar uttrycket och jämförs med varje fallvärde i ordningen (Top -> Bottom).
- Om det finns en matchning, utförs uttalandet i ärendet och hela switchuttalandet avslutas så snart det första matchande switchfallet är slutfört.
- Om det inte finns någon matchning för ärendet faller det till nästa fall.
- Standard nyckelordet anger koden som ska köras om det inte finns något fall match.
Obs! Bristerna i varje fall måste innehålla minst ett körbart uttalande.
Exempel 1: Enkelt program med Switch Statement
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") )
När du kör programmet ovan kommer utmatningen att vara:
Onsdag
I ovanstående program börjar växlingsuttalandet med att matcha dayOfWeek-värdet med fall 1 . Eftersom dayOfWeek-värdet inte matchar det första fallvärdet 1 faller det till nästa fall tills ett matchar.
Eftersom fall 4 matchar switchuttrycket, utförs påståendet print("Wednesday")
i ärendet och switchfallet avslutas. Om inget fall matchades körs uttalande i standard .
Exempel 2: Byt uttalande med genomslag
Om du använder fallthrough
nyckelordet i ärendeuttrycket fortsätter kontrollen till nästa fall även om ärendevärdet inte överensstämmer med växlingsuttrycket.
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") )
När du kör programmet ovan kommer utmatningen att vara:
onsdag torsdag
I ovanstående program utför fall 4 uttalandet print("Wednesday")
och fallthrough
nyckelordet fortsätter till case5 . Uttalandet print("Thursday")
inuti fall 5 körs även om ärendet inte matchar switchuttrycket. Därför kan du se utdata torsdag i konsolen.
Exempel 3: Byt uttalande med mer komplexa mönster
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 """) )
När du kör programmet ovan kommer utmatningen att vara:
Programmeringsspråk: Go Version: 10 Status: Hittades inte
I ovanstående program matchar vi uttrycksprogrammeringsspråk av typen tuplewith olika fall enligt nedan:
case (let name,let version) where (version < 0 && name.count < 0)
Det här fallet binder växeluttrycksvärdet till tillfälliga konstanter eller variabler för användning i fallet medlet
nyckelord. Detta är känt som värdebindande.
Du kan också tillämpa villkor för dessa värden medwhere
klausul. För flera där villkor kan du sammanfoga dem med hjälp av&&
operatören som i exemplet ovan.
Om ärendet inte uppfyller villkoret som definierats inuti där klausul, utförs inte uttalanden inuti detta fallblock och faller igenom för att jämföra nästa switchfall.case ("Swift" ,… <4 )
Detta fall matchar det första tupelelementet med strängen bokstavligt"Swift"
och kontrollerar också om det andra elementet ligger inom det ensidiga området… <4
.case ("Swift" ,4… )
Detta fall matchar det första tupelelementet med strängen bokstavligt"Swift"
och kontrollerar också om det andra elementet ligger inom det ensidiga området4…
.case (let name, let version)
Detta fall binder alla värden i tuplarna till de tillfälliga konstanterna eller variablerna.