Junior — Middle
Je možné implementovať lazy evaluation pomocou konštrukcie let?
sobes.tech AI
Odpoveď od AI
V Swift-e sa konstrukciou let sa deklarujú konštanty, teda hodnoty, ktoré sa inicializujú raz a nemenia sa. Avšak, let sám o sebe nezaručuje lazy (lenivé) hodnotenie.
Na implementáciu lazy hodnotenia v Swift-e sa pred deklaráciou vlastnosti používa kľúčové slovo lazy. To znamená, že hodnota bude vypočítaná až pri prvom prístupe.
Príklad lazy vlastnosti:
class Example {
lazy var expensiveComputation: Int = {
print("Výpočet vykonaný")
return (0..<1000000).reduce(0, +)
}()
}
let example = Example()
// Kým nepristúpime k example.expensiveComputation, výpočet sa nevykoná
print(example.expensiveComputation) // Tu sa vykoná výpočet
Preto let nie je vhodné pre lazy hodnotenie; na to je potrebné použiť lazy var.