W tym artykule dowiesz się, jak używać instrukcji sterujących przełącznikiem do sterowania przepływem wykonywania programu.
Instrukcja switch jest również odmianą instrukcji sterującej Swift, np. If-else, guard itp., Która wykonuje różne czynności w oparciu o różne warunki.
Piękno instrukcji switch polega na tym, że można porównać wartość z kilkoma możliwymi dopasowanymi wzorcami. Dlatego może być używany jako substytut długich if… else… if
drabin, dopasowując jednocześnie złożony wzór.
Składnia instrukcji switch
Składnia instrukcji switch jest następująca:
przełącz zmienną / wyrażenie (case wartość1: // instrukcje case wartość2: // instrukcje default: // instrukcje)
Jak działa instrukcja przełączania w języku Swift?
- Wyrażenie przełączające jest oceniane raz.
- Pobiera wyrażenie i porównuje z każdą wartością przypadku w kolejności (Góra -> Dół).
- Jeśli istnieje dopasowanie, instrukcja wewnątrz przypadku jest wykonywana, a cała instrukcja switch kończy swoje wykonanie, gdy tylko pierwsza zgodna sprawa przełącznika zostanie zakończona.
- Jeśli nie ma dopasowania dla sprawy, przechodzi do następnej sprawy.
- Domyślne słowo kluczowe określa kod do uruchomienia, jeśli nie ma dopasowania wielkości liter.
Uwaga : treść każdego przypadku musi zawierać co najmniej jedną instrukcję wykonywalną.
Przykład 1: Prosty program korzystający z instrukcji Switch
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") )
Po uruchomieniu powyższego programu wynik będzie:
środa
W powyższym programie instrukcja switch zaczyna się od dopasowania wartości dayOfWeek do przypadku 1 . Ponieważ wartość dayOfWeek nie jest zgodna z wartością 1 pierwszego przypadku, przypada do następnego przypadku, dopóki jeden nie pasuje.
Ponieważ przypadek 4 pasuje do wyrażenia przełączającego, instrukcja print("Wednesday")
wewnątrz przypadku jest wykonywana, a przypadek przełącznika kończy. Jeśli żaden przypadek nie został dopasowany, wykonywana jest instrukcja wewnątrz default .
Przykład 2: Instrukcja Switch z fallthrough
Jeśli użyjesz fallthrough
słowa kluczowego wewnątrz instrukcji case, formant przejdzie do następnego przypadku, nawet jeśli wartość przypadku nie jest zgodna z wyrażeniem switch.
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") )
Po uruchomieniu powyższego programu wynik będzie:
środa Czwartek
W powyższym programie przypadek 4 wykonuje instrukcję, print("Wednesday")
a fallthrough
słowo kluczowe przechodzi do przypadku5 . Instrukcja print("Thursday")
inside case 5 jest wykonywana, nawet jeśli wielkość liter nie pasuje do wyrażenia przełączającego. Dlatego w konsoli można zobaczyć dane wyjściowe czwartek .
Przykład 3: Instrukcja Switch z bardziej złożonymi wzorcami
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 """) )
Po uruchomieniu powyższego programu wynik będzie:
Język programowania: Go Wersja: 10 Status: Nie znaleziono
W powyższym programie dopasowujemy programowanie wyrażeńJęzyk typu tup z różnymi przypadkami jak poniżej:
case (let name,let version) where (version < 0 && name.count < 0)
Ten przypadek wiąże wartość wyrażenia przełącznika z tymczasowymi stałymi lub zmiennymi do użycia w treści sprawy zelet
słowem kluczowym. Jest to znane jako wiązanie wartości.
Możesz również zastosować warunek do tych wartości za pomocąwhere
klauzuli. W przypadku wielu warunków gdzie można je połączyć za pomocą&&
operatora, jak w powyższym przykładzie.
Jeśli przypadek nie spełnia warunku zdefiniowanego w klauzuli where, instrukcje wewnątrz tego bloku case nie są wykonywane i przechodzą do porównania następnego przypadku przełącznika.case ("Swift" ,… <4 )
Ten przypadek dopasowuje pierwszy element krotki do literału ciągu,"Swift"
a także sprawdza, czy drugi element znajduje się w jednostronnym zakresie… <4
.case ("Swift" ,4… )
Ten przypadek dopasowuje pierwszy element krotki do literału ciągu,"Swift"
a także sprawdza, czy drugi element znajduje się w jednostronnym zakresie4…
.case (let name, let version)
Ten przypadek wiąże wszystkie wartości krotek z tymczasowymi stałymi lub zmiennymi.