GeneratorType (IteratorProtocol in Swift 3):Generators
jest coś, co może dać element next
jakiejś kolejności, jeśli nie ma elementu zwraca nil
. Generators
enkapsuluje stan iteracji i interfejsy dla iteracji po sekwencji.
Generator działa poprzez zapewnienie jednej metody, a mianowicie - next()
, która po prostu zwraca następną wartość z podstawowej sequence
.
następujących klas Przyjęcie GeneratorType Protokół:
DictionaryGenerator, EmptyGenerator, bardziej here.
SequenceType (Sequence in Swift 3):Sequence
stanowią szereg wartości. Sequence
to typ, który można iterować za pomocą pętli for...in
.
Zasadniczo sekwencja jest fabryką generatorów; coś, co wie, jak tworzyć generatory dla sekwencji.
następujących klas Przyjęcie SequenceType Protokół:
NSArray, NSDictionary, NSSet i more.
CollectionType (Collection in Swift 3):Collection
jest SequenceType
, które można uzyskać poprzez dolny i określa startIndex
i endIndex
. Collection
jest krokiem wykraczającym poza sekwencję; poszczególne elementy kolekcji można uzyskać wielokrotnie.
CollectionType
dziedziczy z SequenceType
następujących klas Przyjęcie CollectionType Protokół:
Array, Dictionary, Set, Range i more.
Formularz więcej informacji można zobaczyć this, this i this
Proszę mnie poprawić jeśli się mylę.** 1) ** 'Array',' Dictionary' i 'Set' wszyscy są zgodne z' collectionType' (który sam implementuje SequenceType (który ma funkcję o nazwie 'next', która zwraca coś, co implementuje' GeneratorType'))? ** 2) ** Czy możesz zaktualizować swoją odpowiedź, aby uwzględnić niektóre typy Swift Foundation, które są zgodne z każdym z 3 wymienionych protokołów? – Honey
Dzięki. Czy nie możesz również zasubskrybować lub uzyskać pierwszy i ostatni indeks NSArray lub NSDictionary? – Honey