请解释Swift编程语言中SequenceType
,GeneratorType
和CollectionType
之间的区别。
另外,如果我实现自己的数据结构,那么使用SequenceType
,GeneratorType
或CollectionType
协议的优势是什么?
答案 0 :(得分:60)
GeneratorType(IteratorProtocol in Swift 3): Generators
可以提供某个序列的next
元素,如果没有元素的话返回nil
。 Generators
封装迭代状态和接口,以便在序列上进行迭代。
生成器通过提供单个方法来工作,即 - next()
,它只返回基础sequence
的下一个值。
以下课程采用GeneratorType协议:
DictionaryGenerator,EmptyGenerator,更多here。
SequenceType(Sequence in Swift 3):Sequence
代表一系列值。 Sequence
是一种可以使用for...in
循环进行迭代的类型。
基本上,序列是发电机工厂;知道如何为序列生成生成器的东西。
以下课程采用序列类型协议:
NSArray,NSDictionary,NSSet和more。
CollectionType(Collection in Swift 3) Collection
是一个SequenceType
,可以通过下标访问并定义startIndex
和endIndex
。 Collection
是超越序列的一步;可以多次访问集合的各个元素。
CollectionType
继承自SequenceType
以下课程采用CollectionType协议: