Как проверить, что двойное значение равно нулю или нулю в котлине - PullRequest
0 голосов
/ 02 марта 2019

Как проверить, что двойное значение равно нулю или нулю в котлине

val ratio:Double? = 0.0

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

отношение равно нулю, 0,0, 0,1

, если отношение равно нулю или 0,0, тогда возвращается 0,12

и коэффициент равен 0,2 или более, затем возвращает то же значение коэффициента

как проверить, не использует ли этот алгоритм оператор if

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете написать это в idomatic Kotlin без оператора if, используя takeUnless.

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

Вызов takeUnless проверяет, соответствует ли число предикату it == 0.0.Если предикат оценивается как true, возвращается null.Только когда предикат оценивается как false, возвращается фактическое число.

Мы можем понять, почему это работает, рассмотрев три возможных случая:

  1. Когда ratio равно null, предикат it == 0.0 оценивается как false.Вызов ratio.takeUnless { it == 0.0 } возвращает значение ratio, которое составляет null.Поскольку его левый операнд равен null, оператор ?: возвращает правое значение 0.12.
  2. Когда ratio равно 0.0, предикат it == 0.0 оценивается в true.Вызов ratio.takeUnless { it == 0.0 } игнорирует значение ratio и возвращает null.Поскольку его левый операнд равен null, оператор ?: возвращает правое значение 0.12.
  3. Когда ratio является ненулевым, ненулевымчисло, предикат it == 0.0 оценивается как false.Вызов ratio.takeUnless { it == 0.0 } возвращает значение ratio, которое является исходным номером.Поскольку его левый операнд не равен нулю, оператор ?: возвращает левое значение.
...