如何在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语句
答案 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
时,才返回实际的数字。
我们可以通过考虑以下三种可能的情况来了解其工作原理:
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,因此返回左侧值。