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)]) // 30Wł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
- Hierarchie Sequence/Collection
- Map/Filter/Reduce, leniwe sekwencje
- Niestandardowe iteratory i wskazówki dotyczące wydajności