美文网首页
Sequence 序列

Sequence 序列

作者: fordring2008 | 来源:发表于2017-02-03 23:15 被阅读20次

    手动实现一个序列

    //手动实现一个迭代器,这是一个迭代器类

    class ReverseIterator :IteratorProtocol{

    typealias Element =T

    var array : [Element]

    var currentIndex =0

    init(array: [Element]) {

    self.array= array

    currentIndex= array.count-1

    }

    func next() ->T? {

    if currentIndex<0{

    return nil

    }else{

    let element =array[currentIndex]

    currentIndex-=1

    return element

    }

    }

    }

    ///手动实现一个序列,类似一个Array

    structReverseSequence :Sequence{

    vararray : [T]

    init(array:[T]) {

    self.array= array

    }

    typealiasitertor =ReverseIterator

    funcmakeIterator() ->ReverseIterator {

    returnReverseIterator(array:self.array)

    }

    }

    //测试

    letarray1 =ReverseSequence(array: [1,2,3,4])

    foriteminarray1{

    print(item)

    }

    // for循环的实际执行情况等同于下面

    variterator =array1.makeIterator()

    whileletobj =iterator.next() {

    print(obj)

    }

    // map方法

    letarray2 =array1.map{return$0 *10}

    相关文章

      网友评论

          本文标题:Sequence 序列

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