lessen 1

  1. 序列是可以无限的,集合不可以

  2. 满足 sequence的协议

    func makeIterator()->IteratorProtocal

  3. 满足IteratorProtocal协议

    mutating func next()->Element?

  4. Sequence不保证被多次遍历,所以first属性只有在集合类型上出现,序列却没有

  5. 在 Swift 3.0 中,编译器缺乏两个必要的特性:现在没有循环协议约束 (Sequence 会对自身进
    行引用),也没有关联类型中的 where 语句支持

    // Swift 3.0 中无法编译
    associatedtype SubSequence: Sequence
    where Iterator.Element == SubSequence.Iterator.Element, SubSequence.SubSequence == SubSequence
    
  6. 集合协议是建立在Sequence协议之上的.集合类型指的是那些稳定的序列,被多次遍历保持一致.

  7. 遵守 ExpressibleByArrayLiteral 协议

    extension FIFOQueue: ExpressibleByArrayLiteral { 
     public init (arrayLiteral elements: Element...) {
         self.init(left: elements.reversed(),right: []) }
    }            
    
  8. 集合类型中的默认Iterator迭代器类型是 IndexingIterator<Self>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容