Widziałeś już instrukcje if
a także pętlę warunkowe, lecz Swift posiada takżę inny rodzaj instrukcji kontrolującej przebieg programu nazywaną switch/case
. Najprostszym sposobem zrozumienia tej instrukcji jest wyobrażenie sobie jej jako zaawansowanej instrukcji warunkowej if
, gdzie możesz posiadać bardzo wiele możliwych dopasowań a Swift wykona jeden spełniający warunek.
W najprostszej formie instrukcji switch/case
mówisz Swiftowi jaką zmienną chcesz sprawdzić, a następnie wprowadzasz listę możliwych przypadków dla tej zmiennej. Swift odnajdzie pierwszy pasujący do Twojej zmiennej przypadek i wykona instrukcję wewnątrz bloku warunkowego. Gdy kod w bloku zostanie wykonany Swift opuści instrukcję warunkową i jej cały blok wykonawczy.
Oto prosty przykład:
let liveAlbums = 2
switch liveAlbums {
case 0:
print("You're just starting out")
case 1:
print("You just released iTunes Live From SoHo")
case 2:
print("You just released Speak Now World Tour")
default:
print("Have you done something new?")
}
Równie dobrze możemy napisać podobne warunki wykorzystując do tego wiele instrukcji if
oraz else if
, lecz ten sposób jest znacznie 'czystszy' co dla nas istotne.
Jedną z zalet korzystania z instrukcji switch/case
jest to, że Swift zapewni sprawdzenie wszystkich Twoich warunków. Oznacza to jedno, że kiedy nie napiszemy obsługi jakiegoś przypadku zdeklarowanego do sprawdzenia, Xcode nie zbuduje Twojej aplikacji.
W sytuacji gdy wartości pasujące do sprawdzanej zmiennej są nieskończone, jak nasza liveAlbums
(liczba całkowita), będziesz musiał obsłużyć przypadek domyślny default
, który wyłapie wszystkie potencjalne wartości. Tak, nawet jeśli wiesz w jakim zakresie będą występować Twoje dane, Swift chce mieć całkowitą pewność.
Swift może zastosować kwalifikację do instrukcji sprawdzania w celu dopasowania przypadków do pewnych zakresów. Na przykład, jeśli chcesz sprawdzić zakres możliwych wartości, powinieneś użyć zamkniętego operatora jak w przykładzie poniżej:
let studioAlbums = 5
switch studioAlbums {
case 0...1:
print("You're just starting out")
case 2...3:
print("You're a rising star")
case 4...5:
print("You're world famous!")
default:
print("Have you done something new?")
}
Jedno o czym należy pamiętać to, że bloki switch/case
w Swifcie nie przeskakują do kolejnego wykonania case
jak mogłeś zauważyć w innych językach programowania. Jeżeli przyzwyczaiłeś się do pisania instrukcji break
w Twoim bloku case
, powinieneś wiedzieć, że w Swifcie nie jest to konieczne.
Zamiast tego możesz użyć słowa kluczowego fallthrough
do przejścia z jedno przypadku w drugi - odwrotność. Oczywiście jeżeli nie wiesz co to oznacza, tym bardziej: nie przejmuj się tym!
SPONSORED Alex is the iOS & Mac developer’s ultimate AI assistant. It integrates with Xcode, offering a best-in-class Swift coding agent. Generate modern SwiftUI from images. Fast-apply suggestions from Claude 3.5 Sonnet, o3-mini, and DeepSeek R1. Autofix Swift 6 errors and warnings. And so much more. Start your 7-day free trial today!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.