我剛剛注意到Swift structs
的static
成員隱含爲lazy
。Swift隱式惰性靜態成員
舉例來說,這樣只會調用init
一次:
class Baz {
init(){
print("initializing a Baz")
}
}
struct Foo {
static let bar = Baz()
}
var z = Foo.bar
z = Foo.bar
什麼是這背後的原理是什麼?
如果我想要相反的行爲呢?
對於全局變量在這裏是懶惰的選擇有一些理由:https://developer.apple.com/swift/blog/?id = 7。靜態成員可能會有類似的基本原理,除了更少的啓動初始化的原因(我的意思是,如果你甚至從來沒有使用類型,它只是通過導入?如果所有靜態變量仍然被初始化而不管使用?) –