Sobes.tech
Junior — Middle

Lehetséges-e a lazy evaluation megvalósítása a let konstrukcióval?

sobes.tech MI

Válasz az MI-től

Swiftben a let konstrukciót konstansok deklarálására használják, azaz olyan értékekre, amelyek egyszer inicializálódnak, és nem változnak. Azonban a let önmagában nem biztosít lazy értékelést.

A lazy értékelés Swiftben történő megvalósításához a tulajdonság deklarációja előtt a lazy kulcsszót kell használni. Ez azt jelenti, hogy az érték csak az első hozzáféréskor lesz kiszámítva.

Lazy tulajdonság példája:

class Example {
    lazy var expensiveComputation: Int = {
        print("Számítás végrehajtva")
        return (0..<1000000).reduce(0, +)
    }()
}

let example = Example()
// Amíg nem hívjuk meg az expensiveComputation-t, a számítás nem történik meg
print(example.expensiveComputation) // Itt történik a számítás

Ezért a let nem alkalmas lazy értékelésre; ehhez a lazy var használata szükséges.