kotlin - 在 Kotlin 中将“If”替换为“When”
问题描述
我无法将if
表达式转换为when
kotlin 中的表达式。我的如果代码如下:
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.")
}
我不确定还有什么需要调整的,或者我是否完全遗漏了一些东西。我会感谢任何帮助和建议。谢谢。
解决方案
您可以range
与in
操作员一起使用来解决问题。
var cardPoints = 7000
val cardLevel: String = when {
cardPoints in 0..999 -> "pearl"
cardPoints in 1000..4999 -> "silver"
cardPoints in 5000..9999 -> "gold"
else -> "platinum"
}
推荐阅读
- javascript - JQuery, $(...).sortable 不是函数
- javascript - 无法从函数 Javascript 中更新变量
- javascript - HTML / javascript 根据用户输入动态创建不同的消息回复
- c# - 如果模型复杂,aspnet核心如何从视图发布数据
- javascript - 如何使用 jquery 或 javascript 从 URL 链接中提取 XML 数据
- c - 在 Swift 中使用 OpenSSL stack_st_x509?
- symfony - symfony 会话不保存
- c# - 使用代理消息在门户中测试 Azure Function Service Bus 触发器
- python - 匹配字符串的Python正则表达式子部分
- mysql - 左连接在结果中重复列的相同值