"when" 语句中的不等式输出错误

Inequality within "when" statement outputs error

这里我有一个程序,它根据不同的条件为变量赋值:

fun main(args: Array<String>) {
   var age = readLine()!!.toInt()
   var string_age = when(age) {
       in 0..11 -> "Child"
       in 12..17 -> "Teen"
       in 18..64 -> "Adult"
       age > 64 -> "Senior"
       else -> "Invalid age"
   }
   print(string_age)
}

但是,不等式“年龄 > 64”returns“不兼容的类型:Boolean 和 Int”。我必须做什么才能在“when”语句中使用不等式。

不幸的是,您不能在 when 的情况下明确使用 when 的参数。 所以你可以这样调整你的代码:

var string_age = when(age) {
    in 0..11 -> "Child"
    in 12..17 -> "Teen"
    in 18..64 -> "Adult"
    else -> {
        if (age > 64) {
            "Senior"
        } else {
            "Invalid age"
        }
    }
}

或者像这样,将 age 移出 when 并在所有情况下显式使用它

var string_age = when {
    age in 0..11 -> "Child"
    age in 12..17 -> "Teen"
    age in 18..64 -> "Adult"
    age > 64 -> "Senior";
    else -> "Invalid age"
}

或者你可以使用范围

下面的技巧

in 65..200 -> "Senior" 而不是 age > 64 -> "Senior"。 200 年足够一个人的寿命;)