博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lazy方法
阅读量:5106 次
发布时间:2019-06-13

本文共 691 字,大约阅读时间需要 2 分钟。

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

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

转载于:https://www.cnblogs.com/muzijie/p/8427185.html

你可能感兴趣的文章
lc 145. Binary Tree Postorder Traversal
查看>>
android dialog使用自定义布局 设置窗体大小位置
查看>>
ionic2+ 基础
查看>>
[leetcode]Minimum Path Sum
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Screening technology proved cost effective deal
查看>>
mysql8.0.13下载与安装图文教程
查看>>
Thrift Expected protocol id ffffff82 but got 0
查看>>
【2.2】创建博客文章模型
查看>>
从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router
查看>>
Jsp抓取页面内容
查看>>
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>
可选参数的函数还可以这样设计!
查看>>
[你必须知道的.NET]第二十一回:认识全面的null
查看>>
Java语言概述
查看>>
关于BOM知识的整理
查看>>
使用word发布博客
查看>>
面向对象的小demo
查看>>
微服务之初了解(一)
查看>>