use*_*336 6 double if-statement kotlin
如何在 kotlin 中检查 Double 值是 Null 还是零
val ratio:Double? = 0.0
val calRatio = if (ratio == null || ratio == 0.0)
0.12
else
ratio
Run Code Online (Sandbox Code Playgroud)
比率为 null , 0.0 , 0.1
如果比率为空或 0.0,则返回 0.12
并且比率为 0.2 或更大,然后返回相同的比率值
如何检查此算法不使用 if 语句
Sam*_*Sam 11
您可以在 idomatic Kotlin 中编写它,而无需if使用takeUnless.
val ratio: Double? = 0.0
val calRatio = ratio.takeUnless { it == 0.0 } ?: 0.12
Run Code Online (Sandbox Code Playgroud)
该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,即原始数字。由于其左侧操作数不为空,因此该?:运算符返回左侧值。| 归档时间: |
|
| 查看次数: |
5119 次 |
| 最近记录: |