gpt4 book ai didi

swift - 惰性初始化听起来很好用。为什么不总是默认使用惰性初始化?

转载 作者:可可西里 更新时间:2023-11-01 00:00:05 24 4
gpt4 key购买 nike

似乎惰性初始化很棒。我理解这个概念并测试了我的代码,我没有看到任何滞后。那么问题来了,为什么不总是使用惰性初始化呢?这有什么缺点?我没有意识到什么?

最佳答案

考虑这个惰性变量的例子:

struct S {
lazy var lazyVar: Int = { /* compute some value */ 0 }()
}

幕后真正发生的事情是这样的:

struct S {
var _lazyVar: Int? = nil

var lazyVar: Int {
mutating get {
if let existingValue = _lazyVar {
return existingValue
}
else {
let newlyComputedValue = /* compute some value */ 0
_lazyVar = newlyComputedValue
return newlyComputedValue
}
}
}
}

如您所见,lazyVar 的每次访问都需要一个分支,以检查是否已经有一个值,或者是否有必要第一次计算一个值。这增加了开销,很容易超过通过简单(快速)推导延迟评估值的好处。

关于swift - 惰性初始化听起来很好用。为什么不总是默认使用惰性初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46335020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com