如何在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语句
你可以使用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
时才返回实际数字。
我们可以通过考虑三种可能的情况来了解其原因:
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
的值,这是原始数字。因为它的左侧操作数不为null,所以ratio.takeUnless { it == 0.0 }
运算符返回左侧值。