0Pricing
Swift Academy · Lekcja

Kompozycja protokołów za pomocą &

Łączenie wielu protokołów w pojedyncze wymaganie wobec typu.

Kompozycja protokołów za pomocą & to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 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

Kompozycja protokołów pozwala połączyć wiele protokołów w jedno wymaganie dotyczące typu za pomocą `&`. Jest to odpowiednik wielokrotnego dziedziczenia w języku Swift.

Podstawowa kompozycja

```swift protocol Named { var name: String { get } } protocol Aged { var age: Int { get } } func describe(_ entity: Named & Aged) { print("\(entity.name) is \(entity.age)") } ``` `Named & Aged` to tymczasowe wymaganie dotyczące typu, a nie nowy protokół.

Użycie w parametrach funkcji

```swift protocol Drawable { func draw() } protocol Animatable { func animate() } func render(_ view: Drawable & Animatable) { view.draw() view.animate() } ```

Przechowywanie typów złożonych

```swift var entity: Named & Aged = makePerson() entity.name // accessible entity.age // accessible ``` Typ zmiennej określa, których elementów członkowskich protokołów można używać.

Kompozycja z klasami

```swift protocol Configurable { func configure() } func setup(_ vc: T) { vc.configure() present(vc, animated: true) } ``` W generykach można połączyć wymaganie dotyczące klasy z protokołem za pomocą `&`.

Kompozycja protokołów a nowy protokół

```swift // Don't create a new protocol just to combine: protocol NamedAndAged: Named, Aged {} // often unnecessary // Prefer inline composition at use sites: func describe(_ e: Named & Aged) { } ``` Nowe protokoły mają sens tylko wtedy, gdy połączenie wymaga metod rozszerzeń.

typealias dla długich kompozycji

```swift typealias Service = Authenticable & Cacheable & Loggable func process(service: Service) { service.authenticate() service.log("processing") } ``` `typealias` pozwala nadawać nazwy często używanym kompozycjom.

Kompozycja w ograniczeniach generycznych

```swift func fetchAndCache(_ resource: T) async throws { let data = try await resource.fetch() resource.cache(data) } ```

Dziedziczenie protokołów a kompozycja

• Dziedziczenie: `protocol C: A, B {}` — C dziedziczy wszystkie wymagania A i B • Kompozycja: `A & B` — stosowana bezpośrednio, bez tworzenia nowego typu Dziedziczenia należy używać, gdy wszystkie typy zgodne z protokołem muszą spełniać oba wymagania; kompozycji — w miejscach wywołania.

Przykład praktyczny: Delegate + DataSource

```swift func setup(_ vc: UITableViewDelegate & UITableViewDataSource) { tableView.delegate = vc tableView.dataSource = vc } ``` Pojedynczy kontroler widoku często spełnia oba wymagania — kompozycja pozwala wyrazić to zwięźle.

Szybkie sprawdzenie

Który operator łączy wiele protokołów w jedno wymaganie dotyczące typu?

Podsumowanie

Najważniejsze informacje: • `Protocol1 & Protocol2` — kompozycja stosowana bezpośrednio • Można jej używać w parametrach, typach zwracanych i ograniczeniach generycznych • `typealias` nadaje nazwy często używanym kompozycjom • Kompozycja jest lepszym wyborem niż tworzenie nowych protokołów z pustym ciałem • Można łączyć wymagania dotyczące klas: `UIViewController & MyProtocol` Dalej: warunkowa zgodność.

Często zadawane pytania

Czy lekcja „Kompozycja protokołów za pomocą &” jest bezpłatna?

Tak — pełny tekst „Kompozycja protokołów za pomocą &” 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 „Kompozycja protokołów za pomocą &”?

Łączenie wielu protokołów w pojedyncze wymaganie wobec typu. Ć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 1 z 4.

Ile czasu zajmuje lekcja „Kompozycja protokołów za pomocą &”?

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. Kompozycja protokołów za pomocą &
  2. Warunkowa zgodność z protokołem
  3. Wymagania Self i projektowanie Equatable
  4. Zasady projektowania zorientowanego na protokoły
← Powrót do Swift Academy