Sobes.tech
Junior — Middle

Milline on omaduse 'by lazy' roll Kotlinis ja millistes olukordades on selle kasutamine sobiv?

sobes.tech AI

Vastus AI-lt

Kotlinis, īpašība ar modifikatoru by lazy, tiek inicializēta kavēti — tas ir, vērtība tiek aprēķināta tikai pirmo reizi, kad pie tās tiek piekļūts, nevis objekta izveides laikā. Tas ir noderīgi, ja inicializācija ir resursu prasīga vai nav vienmēr nepieciešama.

Piemērs lietošanai:

val heavyResource by lazy {
    println("Inicializācija")
    "Rezultāts"
}

fun main() {
    println("Pirms piekļuves")
    println(heavyResource) // Šeit notiek inicializācija
    println(heavyResource) // Atkārtota inicializācija nenotiek
}

Lietošanas scenāriji:

  • Aizkavēta objektu inicializācija, kas nav vienmēr nepieciešami.
  • Veiktspējas optimizācija.
  • Droša inicializācija daudzšaru vidē (pēc noklusējuma, lazy ir šaurs un drošs).