美文网首页Swift开发实战
lazy修饰符和lazy方法

lazy修饰符和lazy方法

作者: sprint | 来源:发表于2015-09-23 16:33 被阅读212次

    swift属性的延迟加载你一定不陌生

    lazy var str:String = "Hello"

    而我们今天关注的不是这个,而是延迟加载方法。

    在swift的标准库中有一组lazy方法,它们是这样定义的:

    func lazy<S:SequenceType>(s:S) -> LazySequence<S>

    func lazy<S:CollectionType where S.Index : RandomAccessIndexType>(s:S) -> LazyRandomAccessCollection<S>

    还有很多。。。

    这些方法可以配合map filter flatten() 等方法使用

    使用map时你可能会这样写

    let data = 1...3

    let result = data.map {  

         (i:Int)->Int in

          print("正在处理 \(i)")     

         return i+1

       }

    for i in result {

       print("resylt\(i)")

    }

    你这么做的输出为:

    #正在处理 1

    #正在处理 2

    #正在处理 3

    #2

    #3

    #4

    可以看到map会一次性把所有数据准备好。

    而我们如果使用lazy

    let data = 1...3

    let result = data.layz.map { //layz

          (i:Int)->Int in

           print("正在处理 \(i)")

            return i+1

    }

    for i in result {

          print("resylt\(i)")

    }

    输出结果:

    #正在处理 1

    #2

    #正在处理 2

    #3

    #正在处理 3

    #4

    看懂了吧

    相关文章

      网友评论

        本文标题:lazy修饰符和lazy方法

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