Krótka odpowiedź: nie.
Wypróbuj ten prosty przykład w jakiejś klasy lub metody Ciebie:
lazy var myLazyVar: Int = {
return 1
}() {
willSet {
print("About to set lazy var!")
}
}
To daje następujący błąd kompilacji czasu:
Lazy properties may not have observers.
W odniesieniu do rachunku let
w druga odpowiedź: zmienna leniwy nie jest konieczna po prostu "niech stałe o opóźnionej inicjalizacji". Rozważmy następujący przykład:
struct MyStruct {
var myInt = 1
mutating func increaseMyInt() {
myInt += 1
}
lazy var myLazyVar: Int = {
return self.myInt
}()
}
var a = MyStruct()
print(a.myLazyVar) // 1
a.increaseMyInt()
print(a.myLazyVar) // 1: "initialiser" only called once, OK
a.myLazyVar += 1
print(a.myLazyVar) // 2: however we can still mutate the value
// directly if we so wishes
co to jest 'ar' w' dla p w ar'? – dfri
Zmieniono to, nie ma to nic wspólnego z pytaniem. dzięki. –