我从 Kotlin 开始,但遇到了一个问题。 我有三个常量(我们称它们为 VAL_A、VAL_B 和 VAL_C),我正在做这个赋值:
var variable = if (value < VAR_A) {
valueA
} else if (value <= VAR_B) {
valueB
} else if (value <= VAR_C) {
valueC
} else {
valueD
}
我想使用 when block 而不是 if else,但我不知道如何处理 value < VAR_A 和 value > VAR_C 。
谢谢你,对不起我的英语!
最佳答案
您可能正在寻找的理想语法是
when (value) {
< valueA -> valueA
<= valueB -> valueB
<= valueC -> valueC
else -> valueD
}
很遗憾,这是不可能的,因为 comparison operators are operator overloads对于需要接收器的功能:
value < valueA
与
相同value.compareTo(valueA) < 0
因为 compareTo
不是 is
或 in
之类的关键字(如 zsmb13 的回答中所用),您需要创建此 当
block :
when {
value < valueA -> valueA
value <= valueB -> valueB
value <= valueC -> valueC
else -> valueD
}
Kotlin 充满了奇妙的东西。您可以冒险尝试一些根本不使用级联条件的替代解决方案。在我看来,您希望 value
向上舍入到最接近的 valueA
、valueB
、valueC
和值D
。因此,例如,替代方案可能是:
var variable = listOf(valueA, valueB, valueC, valueD).sorted().first { value <= it }
这将从集合中选择大于 value
的最接近的值并将其分配给 variable
。
关于android - Kotlin:将 'cascade if' 替换为 'when' 与其他变量进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50162667/