Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 科特林:替换';级联如果';与';何时';与其他变量相比_Android_If Statement_Kotlin - Fatal编程技术网

Android 科特林:替换';级联如果';与';何时';与其他变量相比

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 {

我从科特林开始,我面临一个问题。 我有三个常数(我们称它们为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
        }
var变量=if(值}否则,如果(值例如,如果0
VAR\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 }