Sobes.tech
Junior — Middle

V jakém kontextu je volána funkce lazy()?

sobes.tech AI

Odpověď od AI

Funkce lazy() v Androidu (často v kontextu Kotlinu) slouží k líné inicializaci proměnných. Volání funkce lazy() nastává v okamžiku definice vlastnosti, ale lambda předaná do lazy se vykoná pouze při prvním přístupu k této vlastnosti. Tím se kód uvnitř lazy vykoná v kontextu prvního přístupu k hodnotě, nikoli při vytváření objektu nebo třídy.

Příklad:

val myValue: String by lazy {
    println("Výpočet hodnoty")
    "Ahoj, světe!"
}

fun main() {
    println("Před prvním přístupem")
    println(myValue) // Zde dojde k volání lambda uvnitř lazy
    println(myValue) // Hodnota je již vypočtena, lambda se nevolá znovu
}

V tomto příkladu se lambda uvnitř lazy vykoná pouze jednou při prvním přístupu k myValue.