可以"当"还接受一个表达?

时间:2018-03-12 12:19:45

标签: kotlin

kotlin noob在这里。这是来自kotlin网站的示例代码

fun main(args: Array<String>) {
    val language = if (args.size == 0) "EN" else args[0]
    println(when (language) {
        "EN" -> "Hello!"
        "FR" -> "Salut!"
        "IT" -> "Ciao!"
        else -> "Sorry, I can't greet you in $language yet"
    })
}

现在,如果我将上述代码修改为以下内容:

fun main(args: Array<String>) {
    println(when (if (args.size == 0) "EN" else args[0]) {
        "EN" -> "Hello!"
        "FR" -> "Salut!"
        "IT" -> "Ciao!"
        else -> "Sorry, I can't greet you in $language yet"
    })
}

我收到错误。为什么? Isn&#t; t when是否也应接受表达?在这种情况下if条件的结果?

P.S我在https://try.kotlinlang.org/尝试了这个问题我得到的错误只是一个简单的error:而没有进一步的解释

1 个答案:

答案 0 :(得分:6)

是的,您可以使用when中的表达式。您的第二个示例无法编译,因为您引用了不再定义的language变量。