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 教程。