如何在kotlin中检查Double值是Null还是Zero

问题描述 投票:0回答:1

如何在kotlin中检查Double值是Null还是Zero

val ratio:Double? = 0.0

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

比率为零,0.0,0.1

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

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

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

if-statement kotlin double
1个回答
1
投票

你可以使用qazxsw poi在没有qazxsw poi语句的惯用语Kotlin中写这个。

if

takeUnless调用检查该数字是否与谓词val ratio: Double? = 0.0 val calRatio = ratio.takeUnless { it == 0.0 } ?: 0.12 匹配。如果谓词评估为takeUnless,则返回it == 0.0。仅当谓词评估为true时才返回实际​​数字。

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

  1. nullfalse时,谓词ratio评估为null。对it == 0.0的调用返回false的值,即ratio.takeUnless { it == 0.0 }。因为它的左侧操作数是ratio,所以null运算符返回null的右侧值。
  2. ?:0.12时,谓词ratio评估为0.0。对it == 0.0的调用忽略了true的值,而是返回ratio.takeUnless { it == 0.0 }。因为它的左侧操作数是ratio,所以null运算符返回null的右侧值。
  3. ?:是任何非零,非零数字时,谓词0.12评估为ratio。对it == 0.0的调用返回false的值,这是原始数字。因为它的左侧操作数不为null,所以ratio.takeUnless { it == 0.0 }运算符返回左侧值。
© www.soinside.com 2019 - 2024. All rights reserved.