kotlin - 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")
}
我有一长串何时条件,其中大多数只使用隐式主语,但有几个需要辅助条件
解决方案
//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")
}
推荐阅读
- .net-core - 如何在 web dto 架构内的 swagger ui 中显示自定义验证属性
- python - 试图在谷歌云中查找已部署 python 函数的当前项目 ID 会出错
- amazon-web-services - 使用 Step Function 在不同的帐户中运行 Glue 作业
- c++ - I cant get the right result from my code, getting odd outputs
- c# - 使用 LINQ 反转和展平字典
- sql - Toad for DB2 On Prem 到 On Cloud - 组执行 - 减去查询 - 错误 SQL0206N
- azure - 设备登录后 kubectl 返回错误 您必须登录到服务器(未经授权)
- angular - 模块在 Angular 中没有导出成员“CanActivate”
- r - 在 R 中使用 For 循环向表达式添加两个下标
- python - KeyError:Spyder 中的“pdb_use_exclamation_mark”