在 Kotlin 中用“When”替换“If”

Are*_*999 1 kotlin

我无法将if表达式转换为whenkotlin 中的表达式。我的如果代码如下:

fun main() {
    var cardPoints = 7_000


    val cardLevel: String = if (cardPoints >= 0 && cardPoints < 1000) {
        "pearl"
    } else if (cardPoints >= 1000 && cardPoints < 5_000) {
        "silver"
    } else if (cardPoints >= 5_000 && cardPoints < 10_000) {
        "gold"
    } else {
        "platinum"
    }

    val plural = if(cardPoints > 1 || cardPoints == 0) "s" else ""
    println("You have $cardPoints point$plural and are at the $cardLevel level.")
}
Run Code Online (Sandbox Code Playgroud)

但是,我现在必须将其转换为“When”表达式(最好在范围内),这就是我目前所拥有的:

fun main() {
    var cardPoints = 7_000

    val cardLevel: String = when {
        cardPoints >= 0 && cardPoints < 1000 -> "pearl"

        cardPoints >= 1000 && cardPoints < 5_000 -> "silver"

        cardPoints >= 5_000 && cardPoints < 10_000 -> "gold"
        else -> "platinum"

    }
    val plural = if(cardPoints > 1 || cardPoints == 0) "s" else ""
    println("You have $cardPoints point$plural and are at the $cardLevel level.")
}
Run Code Online (Sandbox Code Playgroud)

我不确定还需要调整什么,或者我是否完全遗漏了什么。我将不胜感激任何帮助和建议。谢谢。

And*_*ner 6

您可以rangein操作员一起使用来解决问题。

var cardPoints = 7000
val cardLevel: String = when {
    cardPoints in 0..999 -> "pearl"

    cardPoints in 1000..4999 -> "silver"

    cardPoints in 5000..9999 -> "gold"

    else -> "platinum"

}
Run Code Online (Sandbox Code Playgroud)