Sobes.tech
Middle

Wat is het verschil tussen de extensiefuncties let, run, also en apply in Kotlin?

sobes.tech AI

Antwoord van AI

let: Roept een afsluiting aan op een object en geeft het resultaat van de afsluiting terug. Maakt het mogelijk om het object als argument te gebruiken in een lambda-uitdrukking (it). Geschikt voor werken met nullable objecten.

// Voorbeeld van gebruik van let
val nullableString: String? = "Hello"
val length = nullableString?.let {
    // it - is een niet-null String
    it.length
}

run: Voert een codeblok uit op een object en geeft het resultaat van het blok terug. Binnen het blok is het object toegankelijk als this. Handig voor het initialiseren van objecten en het aanroepen van methoden.

// Voorbeeld van gebruik van run
val result = buildString {
    // this - is een StringBuilder
    append("Start\n")
    append("Middle\n")
}.run {
    // this - is een String
    uppercase()
}

also: Roept een afsluiting aan op een object en geeft het object zelf terug. Maakt het mogelijk om aanvullende acties uit te voeren (zoals logging of configuratie) op het object zonder het te wijzigen.

// Voorbeeld van gebruik van also
val list = mutableListOf("a", "b", "c").also {
    // it - is een MutableList
    println("Lijst gemaakt: $it")
}

apply: Roept een afsluiting aan op een object en geeft het object zelf terug. Binnen het blok is het object toegankelijk als this. Handig voor het instellen van eigenschappen van het object.

// Voorbeeld van gebruik van apply
val textView = TextView(context).apply {
    // this - is een TextView
    text = "Hallo, wereld!"
    textSize = 16f
    setTextColor(Color.BLACK)
}

Belangrijkste verschillen:

Functie Hoe is het object toegankelijk Wat retourneert het Typisch gebruik
let it Resultaat van lambda Nullable-objecten, transformatie
run this Resultaat van lambda Initialisatie en methoden aanroepen
also it Het object zelf Aanvullende acties (bijwerkingen)
apply this Het object zelf Eigenschappen instellen