Swift开发实战

lazy修饰符和lazy方法

2015-09-23  本文已影响212人  sprint

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

看懂了吧

上一篇 下一篇

猜你喜欢

热点阅读