Assertion de non-nullité
Fait partie de la section Fondamentaux du Journey Kotlin de Coddy. Leçon 17 sur 93.
L’opérateur d’appel sécurisé et l’opérateur Elvis gèrent les valeurs nulles avec élégance, mais parfois, vous êtes absolument certain qu’une valeur pouvant être nulle n’est pas nulle à un point précis de votre code. L’opérateur d’assertion de non-nullité !! vous permet d’indiquer à Kotlin : « Je garantis que cette valeur n’est pas nulle. »
fun main() {
val name: String? = "Alice"
val length = name!!.length // Convertit String? en String
println(length) // Affiche : 5
}L’opérateur !! convertit un type nullable en son équivalent non nullable. Cependant, si la valeur est effectivement null, votre programme plantera avec une NullPointerException :
fun main() {
val name: String? = null
val length = name!!.length // Plante ici !
}Quand l’utiliser : Utilisez !! uniquement lorsque vous avez une logique qui garantit que la valeur ne peut pas être nulle, mais que le compilateur ne peut pas le vérifier. Dans la plupart des cas, préférez les appels sécurisés ?. ou l’opérateur Elvis ?: à la place. L’assertion de non-nullité doit être votre dernier recours, et non votre premier choix.
Défi
FacileÉcrivez une fonction getUppercaseLength qui prend un paramètre text et renvoie la longueur de sa version en majuscules.
La fonction reçoit une valeur de chaîne non nulle, mais le type du paramètre peut être nul (String?). Utilisez l’opérateur d’assertion de non-nullité !! pour la convertir en un type non nullable, puis enchaînez la méthode uppercase() et récupérez la length.
Paramètres :
text(String?) : Une chaîne nullable dont la valeur est garantie
Renvoie : La longueur de la version en majuscules du texte (Int)
Remarque : Pour ce défi, l’entrée sera toujours une chaîne valide, jamais
null. Cela simule un scénario dans lequel vous savez que la valeur existe, mais que le compilateur ne peut pas le vérifier.
Essayez vous-même
fun getUppercaseLength(text: String?): Int {
// Écrivez le code ici
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs, partie 1
Opérateurs arithmétiquesOpérateur moduloAffectation augmentéeOpérateurs de comparaisonRécapitulatif - Mathématiques simples7E/S de base
Fonction PrintlnModèles de chaînesEntrée ReadLineConversion de typeRécapitulatif - Années avant la retraiteRécapitulatif - Vrai ou faux10Fonctions
Déclarer une fonctionParamètres et argumentsValeurs de retourArguments nommésValeurs par défautFonctions à expression uniqueRécapitulatif - Fonction SigmaRécapitulatif - Fonction de validation2Variables
Val ou VarInférence de typeNombresChaîne de caractèresBooléenConventions de nommageRécapitulatif - Initialiser des variables5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Opérateurs logiques, partie 3Ternaire avec une expression ifRécapitulatif - Logique simple8Calculateur de partage d’addition
Message de bienvenueSaisie des données11FizzBuzz avec une variante
Aperçu du jeuLa fonction FizzBuzz3Nullabilité
Qu’est-ce que la sécurité vis-à-vis de nullTypes nullableOpérateur d’appel sécuriséOpérateur ElvisBases des défis de fonctionsAssertion de non-nullitéRécapitulatif - Accès sécurisé6Prise de décision
Instruction IfIf - ElseIf comme expressionExpression WhenWhen avec des plagesRécapitulatif - Calculatrice simple9Boucles
Boucle ForBoucle WhileBoucle Do-WhileBreakContinuePlages dans les bouclesBoucle imbriquéeRécapitulatif - FactorielleRécapitulatif - Entrée dynamiqueEntraînez-vous par vous-même : Playground Kotlin