如何在Kotlin中将WHEN用于表达式?

时间:2020-04-10 04:55:17

标签: kotlin

我在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)
}

1 个答案:

答案 0 :(得分:0)

第一种情况是检查x是否等于调用parseInt(x)的结果,这不是x的函数。

将检查任何等于表达式的大小写是否与x相等。无法创建一种情况,您需要在when语句的目标上调用一个函数,如果该函数返回true,则该函数通过。与目标一起使用时,您唯一的选择是检查其相等性,检查它是否in或检查它is

要执行您要尝试的操作,您需要一个无目标的when语句。

when {
    myString.isNullOrBlank() -> removeValue()
    else -> setValue(myString)
}