0Pricing
Swift Academy · Lekcja

Operator optional chaining ?.

Wywoływać metody i uzyskiwać dostęp do właściwości opcjonałów bez powodowania awarii

Operator optional chaining ?. to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Wprowadzenie

Łańcuchowanie opcjonalne pozwala bezpiecznie wywoływać metody, uzyskiwać dostęp do właściwości i używać indeksowania poprzez łańcuch opcjonalnych wartości. Jeśli dowolne ogniwo łańcucha ma wartość nil, całe wyrażenie zwraca nil bez powodowania awarii.

Operator ?.

```swift struct Address { var city: String } struct Person { var address: Address? } let alice = Person(address: Address(city: "Istanbul")) let bob = Person(address: nil) print(alice.address?.city) // Optional("Istanbul") print(bob.address?.city) // nil ```

Łańcuchowanie na wielu poziomach

Łańcuchy mogą mieć dowolną głębokość: ```swift struct Company { var ceo: Person? } let company = Company(ceo: alice) let city = company.ceo?.address?.city print(city ?? "Unknown") // "Istanbul" ``` Jeśli `ceo` lub `address` ma wartość nil, `city` również staje się nil.

Wywoływanie metod za pomocą łańcuchowania

Metody również można wywoływać za pomocą łańcuchowania opcjonalnego: ```swift var name: String? = "alice" let upper = name?.uppercased() // Optional("ALICE") name = nil let upper2 = name?.uppercased() // nil ``` Typ zwracanej wartości staje się opcjonalny: `String` zmienia się w `String?`.

Indeksowanie przez łańcuchowanie

```swift var dict: [String: [Int]]? = ["scores": [10, 20, 30]] let first = dict?["scores"]?[0] // Optional(10) dict = nil let none = dict?["scores"]?[0] // nil ``` Indeksowanie działa w łańcuchu tak samo jak właściwości i metody.

Łańcuchowanie zwraca wartość opcjonalną

Nawet jeśli końcowy wynik nie jest opcjonalny, łańcuchowanie opakowuje go w Optional: ```swift struct Cat { var lives: Int = 9 } var cat: Cat? = Cat() let lives = cat?.lives // Int? not Int ``` W razie potrzeby rozpakuj wartość za pomocą `??`, `if let` lub `guard let`.

Ustawianie wartości za pomocą łańcuchowania

Można ustawiać właściwości za pomocą łańcuchowania opcjonalnego: ```swift var profile: UserProfile? = UserProfile() profile?.name = "Alice" ``` Jeśli `profile` ma wartość nil, przypisanie zostanie po cichu pominięte (bez awarii).

Wywoływanie metod zwracających Void za pomocą łańcuchowania

```swift var manager: SoundManager? manager?.play() // silently ignored if nil ``` Wywołanie zwraca `Void?` — `()` jeśli wartość nie jest nil albo `nil`, jeśli opcjonalna wartość miała wartość nil. Można sprawdzić wynik, aby dowiedzieć się, czy wywołanie nastąpiło.

Łańcuchowanie opcjonalne a wymuszone rozpakowywanie

```swift // Forced unwrap — crashes if nil: let city = alice.address!.city // Optional chaining — safe: let city = alice.address?.city ``` Zawsze należy preferować łańcuchowanie opcjonalne. `!` należy używać tylko wtedy, gdy ma się pewność, że wartość nil nie wystąpi.

Łączenie z ?? w celu użycia wartości domyślnych

Po łańcuchowaniu opcjonalnym można dodać `??`, aby w przejrzysty sposób określić wartości domyślne: ```swift let displayCity = user.profile?.address?.city ?? "Unknown City" let count = database?.records?.count ?? 0 ``` Cały łańcuch albo zwróci wartość, albo użyje wartości domyślnej.

Szybki test

Jeśli dowolne ogniwo łańcucha opcjonalnego ma wartość `nil`, co zwróci całe wyrażenie?

Podsumowanie

Najważniejsze informacje: • `?.` bezpiecznie uzyskuje dostęp do właściwości, wywołuje metody i odwołuje się do elementów opcjonalnych za pomocą subskryptów • Jeśli dowolne ogniwo ma wartość nil, cały łańcuch zwraca nil • Typ wyniku jest zawsze opcjonalny (nawet jeśli końcowa wartość zwykle nie jest opcjonalna) • Połącz `?.` z `??`, aby tworzyć przejrzyste wzorce bezpiecznego dostępu z wartością domyślną • Preferuj `?.` zamiast `!`, aby uniknąć awarii Dalej: opcjonalne wartości rozpakowywane niejawnie.

Często zadawane pytania

Czy lekcja „Operator optional chaining ?. ” jest bezpłatna?

Tak — pełny tekst „Operator optional chaining ?. ” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Operator optional chaining ?. ”?

Wywoływać metody i uzyskiwać dostęp do właściwości opcjonałów bez powodowania awarii Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Operator optional chaining ?. ”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wiązanie if let i guard let
  2. Nil-coalescing i operator trójargumentowy z opcjonałami
  3. Operator optional chaining ?.
  4. Opcjonały rozwijane niejawnie i sytuacje, w których należy ich unikać
← Powrót do Swift Academy