如何在Kotlin中检查Double值是否为Null或零
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语句
如何在Kotlin中检查Double值是否为Null或零
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语句
你可以使用takeUnless
在符合Kotlin语言习惯的情况下编写代码,而无需使用if
语句。
val ratio: Double? = 0.0
val calRatio = ratio.takeUnless { it == 0.0 } ?: 0.12
takeUnless
函数检查数字是否与谓词it == 0.0
匹配。如果谓词计算结果为true
,则返回null
。只有在谓词计算结果为false
时才返回实际的数字。
我们可以通过考虑三种可能情况来理解此方法:
ratio
为null
时,谓词it == 0.0
的值为false
。调用ratio.takeUnless { it == 0.0 }
将返回ratio
的值,即null
。因为其左侧运算数是null
,所以?:
运算符返回右侧的值0.12
。ratio
为0.0
时,谓词it == 0.0
的值为true
。调用ratio.takeUnless { it == 0.0 }
将忽略ratio
的值而返回null
。因为其左侧运算数是null
,所以?:
运算符返回右侧的值0.12
。ratio
为任何非空,非零数字时,谓词it == 0.0
的值为false
。调用ratio.takeUnless { it == 0.0 }
将返回ratio
的值,即原始数字。因为其左侧运算数不是null
,所以?:
运算符返回左侧的值。