美文网首页
Swift Sequence实现

Swift Sequence实现

作者: 烟影很美 | 来源:发表于2019-07-09 15:24 被阅读0次
    // 继承 迭代器协议
    class MyIterator<T>: IteratorProtocol {
        typealias Element = T
        var array: [Element]
        var currentIndex = 0
        init(array: [Element]) {
            self.array = array
        }
        
        func next() -> T? {
            if currentIndex >= self.array.count {
                return nil
            } else {
                let ele = self.array[currentIndex]
                currentIndex += 1
                return ele
            }
        }
    }
    
    // 继承 序列协议
    class MySequence<T>: Sequence {
        var array: [T] = [T]()
        
        typealias Element = T
        typealias Iterator = MyIterator
        __consuming func makeIterator() -> MySequence.Iterator<T> {
            return MyIterator.init(array: array)
        }
        
        init(array:[T]) {
            self.array = array
        }
    }
    

    MySequence使用

    let seq = MySequence.init(array: [1,2,3])
        for num in seq {
        print(num)
    }
    

    相关文章

      网友评论

          本文标题:Swift Sequence实现

          本文链接:https://www.haomeiwen.com/subject/btwxkctx.html