gpt4 book ai didi

使用闭包时 Swift 惰性存储属性与常规存储属性

转载 作者:可可西里 更新时间:2023-10-31 23:53:38 26 4
gpt4 key购买 nike

在 Swift 中,我们可以设置一个存储属性来使用闭包:

class Test {
var prop: String = {
return "test"
}()
}

对比

或者使惰性存储属性使用闭包:

class Test {
lazy var prop: String = {
return "test"
}()
}

在这两种情况下,用于获取属性值的代码只运行一次。看起来它们是等价的。

在使用闭包时,我什么时候应该使用惰性存储属性而不是计算属性?

最佳答案

import Foundation
struct S {
var date1: NSDate = {
return NSDate()
}()
lazy var date2: NSDate = {
return NSDate()
}()
}

var s = S()
sleep(5)
print( s.date2, s.date1)
/* prints

2015-11-24 19:14:27 +0000 2015-11-24 19:14:22 +0000

*/

两者都是存储属性,检查它们被评估的实时性。惰性属性在第一次需要值时“按需”求值

关于使用闭包时 Swift 惰性存储属性与常规存储属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33901342/

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