首页 > 解决方案 > 在 Kotlin 中将“If”替换为“When”

问题描述

我无法将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.")
}

但是,我现在必须将其转换为“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.")
}

我不确定还有什么需要调整的,或者我是否完全遗漏了一些东西。我会感谢任何帮助和建议。谢谢。

标签: kotlin

解决方案


您可以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"

}

推荐阅读