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.