首页 > 解决方案 > Kotlin“when”表达式在使用主题时是否支持复合布尔表达式?

问题描述

是否可以在when(subject) { ... }块中提供复合布尔表达式?

以下不会编译

val num: Any = 2
when(num) {
    /* compound boolean expression that uses implicit subject expression
     * and an independent expression */
    is Number && true -> println("TRUE")
    else -> println("FALSE")
}

以下将编译,但结果为FALSE. 这是预期的行为吗?

val num: Any = 2
when(num) {
    num is Number && true -> println("TRUE")
    else -> println("FALSE")
}

我有一长串何时条件,其中大多数只使用隐式主语,但有几个需要辅助条件

标签: kotlin

解决方案


//First case
//Prints TRUE if the num value is numeric and true.Anything else prints FALSE
 val num: Any = 2
    when {
        num is Number && true -> println("TRUE")
        else -> println("FALSE")
    }
//Second case
//Prints true if the value is numeric OR true.Anything else prints FALSE
val num: Any = 2
when(num){
         is Number , true -> println("TRUE")
        else -> println("FALSE")
    }
    

推荐阅读