我经历了关于堆栈溢出的多个问题,但我没有得到答案,可以定义什么是"LAZY"关键字以及我们在Swift中使用它的原因.我对斯威夫特很新,请解释一下.
这个词用在两个上下文中.
一个惰性变量是一个存储的属性,只计算一次,但直到它第一次被引用.如果我有这个:
var x: Int = someExpensiveFunction()
Run Code Online (Sandbox Code Playgroud)
它是在实例化其拥有对象时计算的.如果我这样做
lazy var x: Int = someExpensiveFunction()
Run Code Online (Sandbox Code Playgroud)
直到我第一次使用时才会计算出来x.
延迟序列是在需要时计算某些操作的序列.例如,在此代码中
[1, 2, 3].map { someExpensiveFunction($0) }
Run Code Online (Sandbox Code Playgroud)
映射序列立即完全计算.但是在下面
[1, 2, 3].lazy.map { someExpensiveFunction($0) }
Run Code Online (Sandbox Code Playgroud)
最终序列的每个连续元素仅在例如迭代器要求时计算.
我认为,从技术上讲,在第二种情况下lazy不会被用作关键字,但我将其包含在内以保证完整性.
| 归档时间: |
|
| 查看次数: |
1458 次 |
| 最近记录: |