SALE: Save 50% on all my books and bundles >>

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!

Hacking with Swift is sponsored by Instabug

SPONSORED Catch bugs as soon as they happen and know exactly why a crash occurred by integrating Instabug's SDK in one minute. You will automatically receive device data, network logs, and reproduction steps with every bug and crash report.

Learn more and get started for free

Sponsor Hacking with Swift and reach the world's largest Swift community!

Cascable unleashes the power of your camera and unlocks powerful workflows for shooting, managing, and geotagging your photos.

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!