Sobes.tech
Middle

Quelle est la différence entre les fonctions d'extension let, run, also et apply en Kotlin?

sobes.tech IA

Réponse de l'IA

let : Appelle une fermeture sur un objet et retourne le résultat de la fermeture. Permet d'utiliser l'objet comme argument dans une expression lambda (it). Utile pour travailler avec des objets nullable.

// Exemple d'utilisation de let
val nullableString: String? = "Hello"
val length = nullableString?.let {
    // it - c'est une String non nulle
    it.length
}

run : Exécute un bloc de code sur un objet et retourne le résultat du bloc. À l'intérieur du bloc, l'objet est accessible comme this. Utile pour l'initialisation et l'appel de méthodes.

// Exemple d'utilisation de run
val result = buildString {
    // this - c'est un StringBuilder
    append("Start\n")
    append("Middle\n")
}.run {
    // this - c'est un String
    uppercase()
}

also : Appelle une fermeture sur un objet et retourne l'objet lui-même. Permet d'effectuer des actions supplémentaires (comme la journalisation ou la configuration) sans modifier l'objet.

// Exemple d'utilisation de also
val list = mutableListOf("a", "b", "c").also {
    // it - c'est une MutableList
    println("Liste créée : $it")
}

apply : Appelle une fermeture sur un objet et retourne l'objet lui-même. À l'intérieur du bloc, l'objet est accessible comme this. Utile pour configurer les propriétés de l'objet.

// Exemple d'utilisation de apply
val textView = TextView(context).apply {
    // this - c'est un TextView
    text = "Bonjour, le monde!"
    textSize = 16f
    setTextColor(Color.BLACK)
}

Principales différences :

Fonction Comment l'objet est accessible Ce qu'elle retourne Usage typique
let it Résultat de la lambda Objets nullable, transformation
run this Résultat de la lambda Initialisation et appel de méthodes
also it L'objet lui-même Actions supplémentaires (effets secondaires)
apply this L'objet lui-même Configuration des propriétés