0Pricing
Swift Academy · Lekcja

Hierarchie Sequence/Collection

Poznajcie różnice między Sequence i Collection (a także Bidirectional/RandomAccess): gwarancje przechodzenia, indeksy oraz sytuacje, w których algorytmy wymagają silniejszych protocols.

Hierarchie Sequence/Collection to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 z 3. 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 3 lekcji w sumie.

Mapa hierarchii

Stos protokołów iteracji:

  • Sequence: iteracja za pomocą iteratora (może być jednokrotna).
  • Collection: wielokrotne przechodzenie i indeksowanie (startIndex/endIndex).
  • BidirectionalCollection: możliwość cofania indeksów.
  • RandomAccessCollection: stałoczasowe przesuwanie indeksów.

Iteracja Sequence

Sequence gwarantuje możliwość iterowania po elementach w kolejności; nie wymaga obsługi indeksów ani wielokrotnego przechodzenia.

let seq = [1, 2, 3] as AnySequence<Int>    // wrap as AnySequence for demo
for x in seq { print(x, terminator: " ") }
print("")

Indeksy Collection

Collection dodaje indeksy i umożliwia przechodzenie wielokrotne. Można bezpiecznie iterować ponownie.

let arr = ["a","b","c"]          // Array is a Collection
print(arr.startIndex == 0)            // true for Array
print(arr.endIndex == 3)              // endIndex is "one past last"
for i in arr.indices { print(arr[i], terminator: " ") }
print("")
// Iterate again (multi-pass)
for ch in arr { print(ch, terminator: " ") }
print("")

Silniejsze możliwości

BidirectionalCollection umożliwia cofanie indeksów. RandomAccessCollection obsługuje stałoczasowe przesuwanie indeksów (np. Array).

let text = "Swift"                         // String is a BidirectionalCollection
var i = text.index(before: text.endIndex)       // move backward
print(text[i])                                   // last character
// Array is RandomAccessCollection: jumping indices is cheap
let nums = [10,20,30,40]
print(nums[nums.startIndex.advanced(by: 2)])     // 30

Własny Sequence

Własny Sequence może pozwalać tylko na jednokrotne przejście. Po jednokrotnym przejściu iterator może być wyczerpany.

struct Countdown: Sequence, IteratorProtocol {
    var current: Int
    mutating func next() -> Int? {
        guard current >= 0 else { return nil }
        defer { current -= 1 }
        return current
    }
}
var cd = Countdown(current: 3)
for n in cd { print(n, terminator: " ") }   // 3 2 1 0
print("")
// cd is exhausted; iterating again yields nothing (single-pass behavior)

Wybór właściwego protokołu

Wskazówki:

  • Należy używać algorytmów generycznych opartych na Sequence, gdy wystarcza jedno przejście.
  • Należy wymagać Collection w przypadku wielokrotnego przechodzenia lub operacji na indeksach.
  • Należy preferować RandomAccessCollection dla algorytmów, które często przeskakują między indeksami (np. wyszukiwanie binarne).

Collection a Sequence

Szybkie sprawdzenie: Co dodaje Collection w porównaniu z Sequence?

Podsumowanie

Podsumowanie: Sequence → podstawowa iteracja. Collection → indeksy + wielokrotne przechodzenie. Bidirectional → poruszanie się wstecz. RandomAccess → stałoczasowe przesuwanie indeksów. Należy wybrać najmniejszy protokół pasujący do algorytmu.

Często zadawane pytania

Czy lekcja „Hierarchie Sequence/Collection” jest bezpłatna?

Tak — pełny tekst „Hierarchie Sequence/Collection” 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 3 lekcji w sumie.

Co nauczysz się w „Hierarchie Sequence/Collection”?

Poznajcie różnice między Sequence i Collection (a także Bidirectional/RandomAccess): gwarancje przechodzenia, indeksy oraz sytuacje, w których algorytmy wymagają silniejszych protocols. Ć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 3.

Ile czasu zajmuje lekcja „Hierarchie Sequence/Collection”?

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. Hierarchie Sequence/Collection
  2. Map/Filter/Reduce, leniwe sekwencje
  3. Niestandardowe iteratory i wskazówki dotyczące wydajności
← Powrót do Swift Academy