0Pricing
Swift Academy · Lekcja

Wartości powiązane dla bogatych danych

Dołączanie danych do przypadków wyliczeń i wyodrębnianie ich za pomocą dopasowywania wzorców.

Wartości powiązane dla bogatych danych to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 2 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

Wartości skojarzone pozwalają każdemu przypadkowi enumu przechowywać dodatkowe dane. Dzięki nim enumy stają się potężnymi rozłącznymi sumami typów — podstawą bezpiecznego typowo modelowania stanu w Swift.

Definiowanie wartości skojarzonych

```swift enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String) } let product = Barcode.upc(8,85909,51226,3) let web = Barcode.qrCode("https://example.com") ```

Wyodrębnianie za pomocą switch

```swift switch barcode { case .upc(let n, let m, let p, let c): print("UPC: \(n)-\(m)-\(p)-\(c)") case .qrCode(let code): print("QR: \(code)") } ``` Możesz też użyć `case let`, aby przypisać wszystkie wartości jednocześnie: ```swift case let .upc(n,m,p,c): ... ```

Nazwane wartości powiązane

```swift enum NetworkResult { case success(statusCode: Int, data: Data) case failure(error: Error) } if case .success(let code, let data) = result { ... } ``` Etykiety sprawiają, że kontekst wiązania jest jasny.

Wartości powiązane a wartości surowe

• Wartości surowe: stałe określane w czasie kompilacji, ten sam typ dla wszystkich przypadków, właściwość `rawValue` • Wartości powiązane: dane z czasu działania, każdy przypadek ma własny typ, wyodrębniane za pomocą dopasowywania wzorców Nie można używać obu mechanizmów w tym samym typie wyliczeniowym.

Optional jako typ wyliczeniowy

Swiftowy `Optional` jest dosłownie zdefiniowany jako: ```swift enum Optional { case some(Wrapped) case none } ``` Każda instrukcja `if let`, `switch` i `??` korzysta z tego samego mechanizmu.

Result<Success, Failure>

```swift func fetch() -> Result { ... } switch fetch() { case .success(let data): process(data) case .failure(let err): print(err) } ``` `Result` to typ wyliczeniowy biblioteki standardowej, który ma dwa przypadki z wartościami powiązanymi.

Dopasowywanie wzorców w if case

```swift let item = Barcode.qrCode("hello") if case .qrCode(let code) = item { print("QR code: \(code)") } ``` `if case` jest zwięzłe, gdy interesuje Pana/Panią tylko jeden przypadek.

Guard case

```swift func process(_ result: NetworkResult) { guard case .success(_, let data) = result else { return } handle(data) } ``` `guard case` kończy działanie funkcji wcześniej, jeśli wzorzec nie zostanie dopasowany.

Typy wyliczeniowe w kolekcjach

```swift let events: [AppEvent] = [.login("alice"), .pageView("/home"), .logout] let logins = events.compactMap { if case .login(let u) = $0 { return u } else { return nil } } ```

Szybkie sprawdzenie

Jakiego słowa kluczowego używa się do wyodrębniania wartości powiązanych wewnątrz przypadku `switch`?

Podsumowanie

Najważniejsze informacje: • Wartości powiązane dołączają dane do poszczególnych przypadków • Można je wyodrębniać za pomocą `switch`, `if case` lub `guard case` • Nazwane etykiety zwiększają czytelność: `.success(code: Int, data: Data)` • `Optional` i `Result` to typy wyliczeniowe biblioteki standardowej z wartościami powiązanymi • Nie można łączyć wartości powiązanych i surowych w jednym typie wyliczeniowym Dalej: typy wyliczeniowe `indirect` i struktury rekurencyjne.

Często zadawane pytania

Czy lekcja „Wartości powiązane dla bogatych danych” jest bezpłatna?

Tak — pełny tekst „Wartości powiązane dla bogatych danych” 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 „Wartości powiązane dla bogatych danych”?

Dołączanie danych do przypadków wyliczeń i wyodrębnianie ich za pomocą dopasowywania wzorców. Ć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 2 z 4.

Ile czasu zajmuje lekcja „Wartości powiązane dla bogatych danych”?

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. Wartości surowe i CaseIterable
  2. Wartości powiązane dla bogatych danych
  3. Wyliczenia indirect i struktury rekurencyjne
  4. Modelowanie automatów stanów za pomocą wyliczeń
← Powrót do Swift Academy