我在https://kotlinlang.org/docs/reference/control-flow.html中看到了此代码段
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
}
我感到困惑的是第一种情况是x.parseInt(s)
还是其他情况。
我问的原因是,我尝试了以下
when(myString)) {
isNullOrBlank() -> removeValue()
else -> setValue(myString)
}
在isNullOrBlack()
中失败。
我尝试以下操作也失败了。
when(myString)) {
it.isNullOrBlank() -> removeValue()
else -> setValue(it)
}
答案 0 :(得分:0)
第一种情况是检查x
是否等于调用parseInt(x)
的结果,这不是x
的函数。
将检查任何等于表达式的大小写是否与x
相等。无法创建一种情况,您需要在when语句的目标上调用一个函数,如果该函数返回true,则该函数通过。与目标一起使用时,您唯一的选择是检查其相等性,检查它是否in
或检查它is
。
要执行您要尝试的操作,您需要一个无目标的when语句。
when {
myString.isNullOrBlank() -> removeValue()
else -> setValue(myString)
}