Si j'ai un nullable Boolean b
, je peux faire la comparaison suivante en Java:
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
Dans Kotlin, je peux réaliser la même chose en utilisant l' !!
opérateur:
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
Cependant, l'utilisation de !!
me semble un peu sommaire, contournant le système de sécurité nul.
Y a-t-il une approche plus élégante pour cela?
Edit Il semble que j'ai un peu trop simplifié. Pour les variables locales, comme le montre Banthar , cela fonctionne. Cependant, mon booléen b
est en fait une "propriété avec un champ de sauvegarde" (je ne suis pas encore vraiment au courant de ce que cela impose). Voici le résultat:
b
peut être null
et l'une des fonctionnalités de Kotlin est Null Safety , qui donne des erreurs de compilation lors de la tentative d'évaluation de références Nullable. Ainsi, l'utilisation de plain b
donne une erreur de compilation :)
b != nil
attraperez pas avant de vérifier le bon côté?
val r = b?doSomething() ?: doSomethingElse()
devrait fonctionner.
!!b
et pas simplementb
? (Je ne connais pas très bien kotlin, juste des curiosités)