美文网首页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方法

    我们在第一次访问某个属性时,判断这个属性背后的存储是否已经存在,如果存在则直接返回,如果不存在则说明是首次访问,那...

  • lazy修饰符和lazy方法

    swift属性的延迟加载你一定不陌生 lazy var str:String = "Hello" 而我们今天关注的...

  • lazy 修饰符和 lazy 方法

    延时加载或者说延时初始化时很常用的优化方法。 在特定环境下才会使用到的存储属性,可以使用 lazy class C...

  • Swift中的属性

    1、属性访问控制2、属性观察3、KVO4、lazy修饰符和lazy方法 1、属性访问控制 对于方法来说比较直接,我...

  • Swift - LAZY 修饰符和 LAZY 方法

    延时加载或者说延时初始化是很常用的优化方法,在构建和生成新的对象的时候,内存分配会在运行时耗费不少时间,如果有一些...

  • [Swift开发者必备Tips] 单例 | log输出|la

    单例 Log 输出 lazy 修饰符和 lazy 方法 单例 单例是一个在 Cocoa 中很常用的模式了。对于一些...

  • [Vue]基础指令

    v-model .lazy.lazy修饰符,焦点离开文本框发生变化 .trim去空格 .number Vue.di...

  • vue 修饰符

    v-model 修饰符 .lazy.number.trim .sync 修饰符 .native修饰符 事件修饰符 ...

  • Kotlin 使用Perference

    实例: 模板类 委托属性/委托代理 lazy修饰符 with函数 调用

  • swift中lazy 修饰符和 lazy 方法以及get、set

    1,懒加载的写法 2,lazy修饰方法 另外一个不太引起注意的是,在 Swift 的标准库中,我们还有一组 laz...

网友评论

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

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