Android 科特林:替换';级联如果';与';何时';与其他变量相比
我从科特林开始,我面临一个问题。 我有三个常数(我们称它们为VAL_A、VAL_B和VAL_C),我正在进行赋值:Android 科特林:替换';级联如果';与';何时';与其他变量相比,android,if-statement,kotlin,Android,If Statement,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 {
var variable = if (value < VAR_A) {
valueA
} else if (value <= VAR_B) {
valueB
} else if (value <= VAR_C) {
valueC
} else {
valueD
}
var变量=if(值}否则,如果(值例如,如果0VAR\u A
VAR\u B
VAR\u C
为真,则可以执行以下操作:
var variable = when (value) {
in 0..VAR_A -> valueA
in VAR_A..VAR_B -> valueB
in VAR_B..VAR_C -> valueC
else -> valueD
}
但这可能是执行此任务时最清晰的:
var variable = when {
value <= VAR_A -> valueA
value <= VAR_B -> valueB
value <= VAR_C -> valueC
else -> valueD
}
var变量=何时{
价值A
价值b
价值
其他->有价值
}
这应该是您的if
表达式的最简单等价物:
var variable = when {
value < VAR_A -> valueA
value <= VAR_B -> valueB
value <= VAR_C -> valueC
else -> valueD
}
var变量=何时{
值valueA
价值b
价值
其他->有价值
}
您可能需要的理想语法是
when (value) {
< valueA -> valueA
<= valueB -> valueB
<= valueC -> valueC
else -> valueD
}
Kotlin充满了奇妙的东西。你可以探索一些根本不使用级联条件的替代解决方案。在我看来,你希望value
四舍五入到valueA
、valueB
、valueC
和valueD
中最接近的一个。因此,例如,替代方案可能是:
var variable = listOf(valueA, valueB, valueC, valueD).sorted().first { value <= it }
var variable=listOf(valueA,valueB,valueC,valueD).sorted()。首先{值这正是我的问题,我不知道没有参数时我可以使用。非常感谢!
value.compareTo(valueA) < 0
when {
value < valueA -> valueA
value <= valueB -> valueB
value <= valueC -> valueC
else -> valueD
}
var variable = listOf(valueA, valueB, valueC, valueD).sorted().first { value <= it }