先用人话理解
判断结构就像路口的指示牌:条件成立走一条路,不成立走另一条路。Kotlin 的 `if` 可以作为表达式产生结果;`when` 适合把多个分支集中写清楚。
记住这一点
`if` 条件从上到下判断,命中后就执行对应分支。`when` 把一个值与多个选项匹配,`else` 可以处理其余情况。这里的折扣只是教学示例,实际业务还要明确金额、舍入和规则。
`if` 条件从上到下判断,命中后就执行对应分支。`when` 把一个值与多个选项匹配,`else` 可以处理其余情况。这里的折扣只是教学示例,实际业务还要明确金额、舍入和规则。
看一段代码
先看整体,再留意每一行的中文注释。可以复制到 Kotlin Playground 亲自运行。
Kotlin · 1.9+
fun main() {
val score = 86
val grade = if (score >= 90) { // 分数达到 90
"优秀"
} else if (score >= 80) { // 否则再检查是否达到 80
"良好"
} else if (score >= 60) { // 再检查是否及格
"及格"
} else {
"需要继续努力"
}
println("成绩等级:$grade")
val member = "黄金"
val discount = when (member) { // 按会员等级选择折扣
"白银" -> 0.95
"黄金" -> 0.90
"铂金" -> 0.85
else -> 1.0 // 其他等级不打折
}
println("折扣系数:$discount")
}轮到你动手
抄下来,改一改
把成绩改成 72,观察等级变化;再给 `when` 添加一个“钻石”会员分支。
小提示:先让原代码成功运行,再一次只改一个地方。
三道小测
先自己选答案,再展开核对。答案不会自动揭晓。
1. 多个条件需要依次检查,常见结构是什么?
2. when 中的 else 通常做什么?
3. 下面哪种写法可以把判断结果赋给变量?
1. A. if / else if。
2. A. 处理其他情况。
3. A. Kotlin 的 if 可以作为表达式。
深入阅读
官方控制流文档进一步介绍 if、when 和条件表达式。
https://kotlinlang.org/docs/control-flow.html ↗