Junior
Čo je lazy?
sobes.tech AI
Odpoveď od AI
Kľúčové slovo lazy sa používa na oneskorenú inicializáciu vlastnosti.
Vlastnosť s lazy sa inicializuje iba pri prvom prístupe. Toto je užitočné pre:
- Výkon: ak tvorba objektu vyžaduje veľa zdrojov, ale nie je vždy potrebná.
- Vyhýbanie sa cyklickým závislostiam počas inicializácie.
- Prácu s externými zdrojmi alebo dátami, ktoré nemusia byť dostupné pri vytváraní objektu.
Vlastnosti lazy by mali byť:
- Premenné (
var), pretože ich hodnota sa môže pri prvom prístupe zmeniť. - Bez pozorovateľov (
willSet,didSet) do prvého prístupu.
class HeavyResource {
init() {
print("Ťažký zdroj inicializovaný")
// Simulácia náročnej inicializácie
Thread.sleep(forTimeInterval: 1)
}
}
class MyPresenter {
let name = "Prezentér"
// vlastnosť lazy, inicializuje sa pri prvom použití
lazy var heavyResource: HeavyResource = {
print("Vytváranie ťažkého zdroja")
return HeavyResource()
}()
init() {
print("\(name) inicializovaný")
}
func accessResource() {
print("Prístup k ťažkému zdroju...")
_ = heavyResource // Tu dochádza k inicializácii lazy vlastnosti
print("Zdroj prístupný")
}
}
// Inicializujeme prezentéra
let presenter = MyPresenter() // Výstup: Prezentér inicializovaný
// Prístup ku zdroju neskôr, keď je naozaj potrebný
presenter.accessResource()
/*
Výstup:
Prístup k ťažkému zdroju...
Vytváranie ťažkého zdroja
Ťažký zdroj inicializovaný
Zdroj prístupný
*/
// Opakovaný prístup nevyvoláva opätovnú inicializáciu
presenter.accessResource()
/*
Výstup:
Prístup k ťažkému zdroju...
Zdroj prístupný
*/