Cómo verificar el valor doble es nulo o cero en kotlin
val ratio:Double? = 0.0 val calRatio = if (ratio == null || ratio == 0.0) 0.12 else ratioproporción en nulo, 0.0, 0.1
si la relación es nula o 0.0, devuelve 0.12
y la relación es 0.2 o más, luego devuelve el mismo valor de relación
cómo verificar que este algoritmo no use la declaración if
Puede escribir esto en Kotlin idomático sin una declaración if usando takeUnless .
val ratio: Double? = 0.0 val calRatio = ratio.takeUnless { it == 0.0 } ?: 0.12 La llamada a takeUnless comprueba si el número coincide con el predicado it == 0.0 . Si el predicado se evalúa como true , se devuelve null . Solo cuando el predicado se evalúa como false se devuelve el número real.
Podemos ver por qué esto funciona considerando los tres casos posibles:
ratio es null , el predicado it == 0.0 evalúa como false . La llamada a ratio.takeUnless { it == 0.0 } devuelve el valor de ratio , que es null . Debido a que su operando del lado izquierdo es null , el operador ?: devuelve el valor del lado derecho de 0.12 .ratio es 0.0 , el predicado it == 0.0 evalúa como true . La llamada a ratio.takeUnless { it == 0.0 } ignora el valor de ratio y en su lugar devuelve null . Debido a que su operando del lado izquierdo es null , el operador ?: devuelve el valor del lado derecho de 0.12 .ratio es cualquier número distinto de cero y no nulo, el predicado it == 0.0 evalúa como false . La llamada a ratio.takeUnless { it == 0.0 } devuelve el valor de ratio , que es el número original. Debido a que su operando del lado izquierdo no es nulo, el operador ?: devuelve el valor del lado izquierdo.