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

  • 相关阅读:
    Git删除不存在对应远程分支的本地分支
    Git删除远程分支
    将博客搬至CSDN
    HttpStatus
    Mysql 日期
    jekyll开发静态网站
    修改maven默认的jdk版本
    使用@Value进行静态常量的值注入
    妙笔生花处,惊艳四座
    Integer 和 int 值比较
  • 原文地址:https://www.cnblogs.com/muzijie/p/8427185.html
Copyright © 2011-2022 走看看