NEW: Join my free 100 Days of SwiftUI challenge today! >>

Switch case

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 Instabug helps you identify and resolve severe crashes quickly. You can retrace in-app events and know exactly which line of code caused the crash along with environment details, network logs, repro steps, and the session profiler. Ask more questions or keep users up-to-date with in-app replies straight from your dashboard. Instabug takes data privacy seriously, so no one sees your data but you! See more detailed features comparison and try Instabug's crash reporting SDK for free.

BUY OUR BOOKS
Buy Pro Swift Buy Swift Design Patterns Buy Testing Swift Buy Hacking with iOS Buy Swift Coding Challenges Buy Swift on Sundays Volume One Buy Server-Side Swift (Vapor Edition) Buy Advanced iOS Volume One Buy Advanced iOS Volume Two Buy Advanced iOS Volume Three Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with macOS Buy Dive Into SpriteKit Buy Swift in Sixty Seconds Buy Objective-C for Swift Developers Buy Server-Side Swift (Kitura Edition) Buy Beyond Code

Was this page useful? Let us know!