6 votes

Comment vérifier si une valeur double est nulle ou zéro en kotlin ?

Comment vérifier si une valeur double est nulle ou zéro en kotlin ?

val ratio:Double? = 0.0

val calRatio = if (ratio == null || ratio == 0.0)
        0.12
    else
        ratio

rapport dans null , 0.0 , 0.1

si ratio nul ou 0.0 alors retour 0.12

et que le ratio est égal ou supérieur à 0,2, alors la même valeur de ratio est retournée.

Comment vérifier que cet algorithme n'utilise pas l'instruction if ?

9voto

Sam Points 2640

Vous pouvez écrire cela en Kotlin idomatique sans un if déclaration utilisant takeUnless .

val ratio: Double? = 0.0
val calRatio = ratio.takeUnless { it == 0.0 } ?: 0.12

En takeUnless L'appel vérifie si le nombre correspond au prédicat it == 0.0 . Si le prédicat est évalué à true , null est retourné. Ce n'est que lorsque le prédicat est évalué à false est le nombre réel retourné.

Nous pouvons voir pourquoi cela fonctionne en considérant les trois cas possibles :

  1. Lorsque ratio est null le prédicat it == 0.0 évalue à false . L'appel à ratio.takeUnless { it == 0.0 } retourne la valeur de ratio qui est null . Parce que son opérande de gauche est null le ?: L'opérateur retourne la valeur du côté droit de 0.12 .
  2. Lorsque ratio est 0.0 le prédicat it == 0.0 évalue à true . L'appel à ratio.takeUnless { it == 0.0 } ignore la valeur de ratio et renvoie à la place null . Parce que son opérande de gauche est null le ?: L'opérateur retourne la valeur du côté droit de 0.12 .
  3. Lorsque ratio est un nombre non nul et non nul, le prédicat it == 0.0 évalue à false . L'appel à ratio.takeUnless { it == 0.0 } retourne la valeur de ratio qui est le numéro d'origine. Parce que son opérande de gauche n'est pas nul, la fonction ?: L'opérateur renvoie la valeur du côté gauche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X