条件表达式:if 和 when
Kotlin 提供了两种强大的条件表达式:if 和 when。它们不仅可以作为语句使用,还可以作为表达式返回结果。本章将详细介绍它们的语法和用法。
1. if 表达式
在 Kotlin 中,if 不仅可以作为条件语句,还可以作为表达式返回结果。
基本用法
val max = if (a > b) a else b
- 如果
a > b,返回a,否则返回b。 - 不需要三元运算符(
?:),因为if已经可以替代。
多分支 if-else
val result = if (score >= 90) {
"优秀"
} else if (score >= 60) {
"及格"
} else {
"不及格"
}
- 每个分支的最后一行是返回值。
2. when 表达式
when 是 Kotlin 中更强大的条件表达式,类似于其他语言中的 switch,但功能更灵活。
基本用法
when (x) {
1 -> println("x 是 1")
2 -> println("x 是 2")
else -> println("x 不是 1 或 2")
}
- 匹配
x的值,执行对应的分支。 else分支是必须的(除非编译器能证明所有情况已覆盖)。
多条件匹配
when (x) {
0, 1 -> println("x 是 0 或 1")
in 2..10 -> println("x 在 2 到 10 之间")
is String -> println("x 是字符串")
else -> println("其他情况")
}
- 支持逗号分隔的多个值、范围检查(
in)和类型检查(is)。
作为表达式使用
val description = when (x) {
1 -> "一"
2 -> "二"
else -> "未知"
}
when可以直接返回结果。
无参形式
when {
x.isOdd() -> println("x 是奇数")
x.isEven() -> println("x 是偶数")
else -> println("x 未知")
}
- 无参
when可以替代复杂的if-else链。
3. if 与 when 的选择
- 简单二选一:优先用
if。 - 多分支或复杂条件:优先用
when。 - 需要返回值时:两者均可,但
when通常更清晰。
示例代码
fun main() {
val score = 85
val grade = when (score) {
in 90..100 -> "A"
in 80..89 -> "B"
in 60..79 -> "C"
else -> "D"
}
println("成绩等级:$grade") // 输出:B
}
总结
if适合简单条件判断,且能替代三元运算符。when功能更强大,支持多分支、范围检查和类型检查。- 两者均可作为表达式返回结果。
