Kotlin if/else
最后修改于 2025 年 4 月 19 日
Kotlin 的条件语句允许程序根据布尔表达式做出决策。if/else 关键字是控制程序流程的基础。本教程通过实际例子深入探讨 if/else。
基本定义
在 Kotlin 中,if 是一个返回值的表达式。它可以使用或不使用 else。条件必须计算为布尔值。当用作表达式时,else 分支是强制性的。
简单的 if 语句
if 的最基本形式是在条件为真时执行一段代码块。条件必须是一个布尔表达式。如果为假,则跳过该代码块。
package com.zetcode
fun main() {
val age = 20
if (age >= 18) {
println("You are an adult")
}
}
此示例检查年龄是否满 18 岁或以上。如果为真,则打印“您是成年人”。代码块仅在满足条件时执行。对于 18 岁以下的人,不执行任何操作。
if/else 语句
当条件为假时,else 子句提供了一个替代路径。这在您的代码中创建了一个二元决策点。将且仅将执行一个代码块。
package com.zetcode
fun main() {
val num = 7
if (num % 2 == 0) {
println("$num is even")
} else {
println("$num is odd")
}
}
这检查一个数字是偶数还是奇数。第一个代码块针对偶数运行,而 else 代码块针对奇数运行。在这种情况下,输出将是“7 是奇数”。
if 作为表达式
在 Kotlin 中,if 可以返回值,使其成为一个表达式。这取代了其他语言的三元运算符。返回的值来自代码块中的最后一个表达式。
package com.zetcode
fun main() {
val a = 10
val b = 20
val max = if (a > b) {
println("a is larger")
a
} else {
println("b is larger or equal")
b
}
println("Max is $max")
}
在这里,if 确定 a 和 b 之间的较大值。结果分配给 max。两个分支都打印一条消息并返回值。输出显示“b 大于或等于”和“Max is 20”。
使用 else if 的多个条件
对于更复杂的决策,使用 else if 链接条件。每个条件都按顺序检查,直到其中一个匹配。仅执行第一个匹配的代码块。
package com.zetcode
fun main() {
val score = 85
if (score >= 90) {
println("Grade A")
} else if (score >= 80) {
println("Grade B")
} else if (score >= 70) {
println("Grade C")
} else {
println("Grade F")
}
}
此示例根据分数范围分配字母等级。条件从上到下检查。对于分数 85,它打印“Grade B”并跳过剩余的检查。else 处理所有其他情况。
嵌套的 if 语句
您可以在其他 if 代码块内嵌套 if 语句以实现复杂的逻辑。每个嵌套的 if 都有其自己的条件。正确的缩进对于可读性至关重要。
package com.zetcode
fun main() {
val age = 25
val hasLicense = true
if (age >= 18) {
if (hasLicense) {
println("You can drive")
} else {
println("You need a license")
}
} else {
println("Too young to drive")
}
}
这同时检查年龄和驾照状态。外部 if 验证年龄,而内部 if 检查驾照。只有持有驾照的成年人才能开车。在这种情况下,输出为“您可以开车”。
何时使用 when 替换 if
对于多个条件,Kotlin 的 when 通常比嵌套的 if 更简洁。when 对于匹配多个值更具可读性。它也适用于枚举和范围。
package com.zetcode
fun main() {
val day = 3
val dayType = when (day) {
1, 2, 3, 4, 5 -> "Weekday"
6, 7 -> "Weekend"
else -> "Invalid day"
}
println(dayType) // Output: Weekday
}
此 when 表达式替换了多个 if-else 检查。它将 day 与 weekday 或 weekend 值匹配。对于 day 3,输出为“Weekday”。else 处理无效输入。
单行 if 表达式
对于简单条件,Kotlin 允许单行 if 表达式,无需大括号。这很简洁,但应谨慎使用。复杂的逻辑应使用完整的代码块以提高可读性。
package com.zetcode
fun main() {
val isRaining = true
val activity = if (isRaining) "Stay inside" else "Go outside"
println(activity) // Output: Stay inside
}
此单行 if 根据天气确定活动。条件足够简单,适合这种紧凑的形式。当 isRaining 为 true 时,输出为“留在室内”。每个分支都直接返回一个字符串。
if/else 的最佳实践
- 首选表达式: 当返回值为更简洁的代码时,将 if 用作表达式。
- 避免深度嵌套: 考虑
when或重构以处理复杂的嵌套条件。 - 保持条件简单: 将复杂的条件提取到命名良好的布尔变量或函数中。
- 包含 else: 使用 if 作为表达式时,始终处理 else 情况。
- 使用早期返回: 在函数中,考虑提前返回而不是深度嵌套。
来源
本教程深入探讨了 Kotlin 的 if/else 语句,展示了从基本用法到高级用法的各种形式。我们探索了表达式、嵌套、类似 when 的替代方案以及最佳实践。正确使用条件语句可以使程序更灵活、更强大。
作者
列出 所有 Kotlin 教程。