• 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后,可以在实际访问序列元素时,才执行闭包运算。

  • 相关阅读:
    django 之 用户忘记密码的解决办法
    Django 富文本ckeditor 在模板中的实现
    MySQL密码的恢复方法
    sublime 快捷键
    linux 修改用户密码
    ubuntu 下重启 mysql
    python 控制浏览器模块
    读书笔记:从小工到专家(一)
    urlparse 模块
    python 标准内建函数
  • 原文地址:https://www.cnblogs.com/muzijie/p/8427185.html
Copyright © 2020-2023  润新知