Swift 惰性存储 属性 与使用闭包时的常规存储 属性
Swift lazy stored property versus regular stored property when using closure
在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
*/
两者都是存储属性,检查它们被评估的实时性。惰性 属性 在第一次需要值时被计算 'on demand'
在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
*/
两者都是存储属性,检查它们被评估的实时性。惰性 属性 在第一次需要值时被计算 'on demand'