Fonctions let, also et de portée
Travaillez avec des valeurs pouvant être nulles.
Fonctions let, also et de portée est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 4 leçons au total.
Que sont les fonctions de portée ?
Les fonctions de portée permettent d'exécuter un bloc de code dans le contexte d'un objet. Elles rendent le code plus concis, notamment avec les valeurs pouvant être nulles.
Cette leçon se concentre sur let et also, les deux fonctions les plus utiles pour la sécurité vis-à-vis de null, ainsi que sur leur relation avec l'opérateur d'appel sécurisé.
La fonction let
let exécute un bloc et transmet l'objet sous le nom it. Elle renvoie ce que le bloc renvoie.
Elle est pratique pour transformer une valeur ou limiter la portée d'un nom temporaire.
fun main() {
val length = "Kotlin".let { it.length }
println(length) // prints: 6
}let pour la sécurité vis-à-vis de null
Combinez ?. avec let pour n'exécuter un bloc que lorsqu'une valeur n'est pas null. Le bloc s'exécute une seule fois, avec la valeur dans it.
Si la valeur est null, le bloc est entièrement ignoré.
fun main() {
val name: String? = "Ada"
name?.let {
println("Hello, " + it)
}
}Ignoré lorsque la valeur est null
Lorsque le récepteur est null, ?.let ne fait rien. Le bloc ne s'exécute jamais.
Ce programme n'affiche rien, car name est null.
fun main() {
val name: String? = null
name?.let {
println("Hello, " + it)
}
}Renommer it
Vous pouvez donner un nom plus explicite au paramètre au lieu d'utiliser it. Cela améliore la lisibilité dans les blocs plus longs.
Utilisez une flèche pour le nommer explicitement.
val name: String? = "Bo"
name?.let { value ->
println(value.uppercase())
}La fonction also
also transmet elle aussi l'objet dans it, mais renvoie l'objet d'origine au lieu du résultat du bloc.
Elle est idéale pour les effets secondaires comme la journalisation, tout en conservant la valeur inchangée dans une chaîne d'appels.
fun main() {
val n = 5.also { println("got " + it) }
println(n) // prints: 5
}Valeur renvoyée par let et also
La différence essentielle est la suivante : let renvoie le résultat du bloc, tandis que also renvoie l'objet d'origine.
Choisissez let pour transformer une valeur, et also pour l'inspecter sans la modifier.
val a = "hi".let { it.length } // a = 2 (Int)
val b = "hi".also { it.length } // b = "hi" (String)also pour la journalisation
Comme also renvoie l'objet, cette fonction s'intègre dans une chaîne pour inspecter une valeur en cours de traitement.
Ici, nous journalisons une valeur pouvant être null uniquement si elle est présente, puis nous continuons à l'utiliser.
fun main() {
val token: String? = "abc"
val result = token?.also { println("token: " + it) }
println(result)
}let avec l'opérateur Elvis
Associez ?.let à l'opérateur Elvis pour fournir une solution de remplacement lorsque la valeur est null.
Le bloc produit un résultat lorsque la valeur est présente ; la partie Elvis gère le cas null.
fun main() {
val raw: String? = null
val out = raw?.let { it.trim() } ?: "empty"
println(out) // prints: empty
}Choisir une fonction de portée
Pour la sécurité vis-à-vis de null, choisissez let lorsque vous voulez transformer une valeur non nulle ou l'utiliser dans un bloc. Choisissez also lorsque vous voulez produire un effet secondaire tout en conservant l'objet d'origine.
Les deux fonctions s'associent naturellement à l'opérateur d'appel sécurisé pour éviter les plantages liés à null.
user?.let { save(it) } // transform/use
user?.also { log(it) } // side effect, keep userUn exemple combiné
Ce programme utilise ?.let pour construire un message et l'opérateur Elvis comme solution de repli. Il illustre le fonctionnement courant de Kotlin avec une gestion sûre de null.
Aucune vérification explicite de null n'apparaît, et pourtant le code est entièrement sûr.
fun main() {
val city: String? = "Goreme"
val label = city?.let { "City: " + it } ?: "Unknown"
println(label)
}Vérification rapide
Testez votre compréhension de let et also.
Récapitulatif
Les fonctions de portée exécutent un bloc dans le contexte d'un objet. let transmet l'objet dans it et renvoie le résultat du bloc ; also transmet l'objet dans it et renvoie l'objet d'origine.
Avec ?.let, vous agissez sur une valeur uniquement lorsqu'elle n'est pas null. Vous allez maintenant réunir ces notions pour éviter entièrement les NullPointerExceptions.
Questions Fréquemment Posées
La leçon « Fonctions let, also et de portée » est-elle gratuite ?
Oui — le texte complet de « Fonctions let, also et de portée » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Fonctions let, also et de portée » ?
Travaillez avec des valeurs pouvant être nulles. Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Android Academy ?
Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Fonctions let, also et de portée » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?
Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Types pouvant être nuls ou non nuls
- Appels sûrs et opérateur Elvis
- Fonctions let, also et de portée
- Éviter les NullPointerExceptions