如何在Kotlin中检查Double值是否为Null或零

时间:2019-03-02 06:17:57

标签: if-statement kotlin double

如何在Kotlin中检查Double值是否为空或零

val ratio:Double? = 0.0

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

比率null,0.0,0.1

如果比率为null或0.0,则返回0.12

并且比率为0.2或更大,然后返回相同的比率值

如何检查此算法不使用if语句

1 个答案:

答案 0 :(得分:0)

您可以使用takeUnless而不用if语句在idomatic Kotlin中编写此代码。

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

takeUnless调用检查数字是否与谓词it == 0.0相匹配。如果谓词的值为true,则返回null。仅当谓词评估为false时,才返回实际​​的数字。

我们可以通过考虑以下三种可能的情况来了解其工作原理:

  1. rationull时,谓词it == 0.0的值为false。对ratio.takeUnless { it == 0.0 }的调用返回ratio的值,即null。由于null运算符的左侧操作数为?:,因此它返回0.12的右侧值。
  2. ratio0.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,它是原始数字。由于?:运算符的左侧操作数不为null,因此返回左侧值。