Soru Hızlı bir şekilde SequenceType ve CollectionType arasındaki fark nedir?


Lütfen arasındaki farkı açıkla SequenceType, GeneratorType ve CollectionType Swift programlama dilinde.

Ayrıca, kendi veri yapmamı gerçekleştirirsem kullanmanın avantajı ne olurdu? SequenceType, GeneratorType veya CollectionType protokoller?


25
2018-06-01 04:58


Menşei




Cevaplar:


GeneratorType (Swift 3'te IteratorProtocol):  Generators verebilecek bir şey next geri döndüğü hiçbir öğe yoksa, bazı dizinin öğesi nil. Generators bir dizi üzerinde yineleme durumu ve yineleme için arayüzleri kaplar.

Bir jeneratör, yani tek bir yöntem sağlayarak çalışır - next()basitçe altta yatan değerden bir sonraki değeri döndürür sequence.

Aşağıdaki sınıfları GeneratorType Protokolü Kabul Edin:

DictionaryGenerator, EmptyGenerator, Daha İşte.


SequenceType (Swift 3'te Sıra): bir Sequence bir dizi değeri temsil eder. Sequence bir ile yinelenen bir türüdür for...in döngü.

Esasen bir dizi bir jeneratör fabrikasıdır; Bir dizi için jeneratörler nasıl yapılacağını bilen bir şey.

Aşağıdaki sınıflar SequenceType Protokolü:

NSArray, NSDictionary, NSSet ve Daha.


CollectionType (Swift 3 koleksiyonunda):  Collection bir SequenceType bu, altyazı yoluyla erişilebilir ve bir startIndex ve endIndex. Collection bir dizinin ötesinde bir adımdır; Bir koleksiyonun bireysel unsurlarına birden çok kez erişilebilir.

CollectionType dan miras SequenceType

Aşağıdaki sınıflar CollectionType Protokolü'nü Kabul Et:

Dizi, Sözlük, Set, menzil ve Daha.


Görebileceğiniz daha fazla bilgi formu bu, bu, ve bu


53
2018-06-01 06:17



Yanılıyorsam lütfen beni düzeltin. 1)  Array, Dictionary ve Set hepsi uyumlu collectionType (Kendisi, SequenceType'ı uygular (adında bir işlevi vardır) next hangi uygulayan bir şey döndürür GeneratorType))? 2) Cevabınızı, bahsedilen 3 protokolün her birine uyan bazı Swift Foundation türlerini içerecek şekilde günceller misiniz? - Honey
Teşekkürler. Ayrıca, NSArray veya NSDictionary'ın ilk ve son dizinini de alabilir misiniz? - Honey