zoukankan      html  css  js  c++  java
  • Lazy方法

    Swift标准库有一组lazy方法,或者说是计算属性,可以把mapfilter这类接受闭包运行的方法实现延时运行。对于运行代价很大的情况,它可以起到不小的性能提升作用。 本来不使用lazy是这样的:

    let data = 1 ... 3
    let result = data.map { (a) -> Int in
        print("正在处理(a)")
        return a * a
    }
    
    print("准备访问结果")
    
    for i in result.reversed() {
        print("操作后的结果为(i)")
    }
    
    print("操作完毕")

    打印结果为:

    正在处理1
    正在处理2
    正在处理3
    准备访问结果
    操作后的结果为9
    操作后的结果为4
    操作后的结果为1
    操作完毕

    在没有lazy时,map会按顺序直接运行闭包。 下面先取其lazy结果,后再map:

    let data = 1 ... 3
    let result = data.lazy.map { (a) -> Int in
        print("正在处理(a)")
        return a * a
    }
    
    print("准备访问结果")
    
    for i in result.reversed() {
        print("操作后的结果为(i)")
    }
    
    print("操作完毕")

    打印结果为:

    准备访问结果
    正在处理3
    操作后的结果为9
    正在处理2
    操作后的结果为4
    正在处理1
    操作后的结果为1
    操作完毕

    lazy后,可以在实际访问序列元素时,才执行闭包运算。

  • 相关阅读:
    Java的家庭记账本程序(K)
    构建之法阅读笔记01
    Java的家庭记账本程序(J)
    iOS-CALayer实现简单进度条
    iOS-CALayer
    iOS-CAEmitterLayer(粒子效果)
    iOS-OpenGLES 简单渲染
    iOS-CoreImage简单使用
    iOS富文本-NSAttributedString简单封装
    iOS后台运行
  • 原文地址:https://www.cnblogs.com/muzijie/p/8427185.html
Copyright © 2011-2022 走看看