Sobes.tech
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.