跳转语句:break、continue、return 与标签
1. break 语句
break 用于立即终止当前所在的循环(for、while、do-while),并跳出循环体继续执行后续代码。
示例
for (i in 1..5) {
if (i == 3) break // 当 i=3 时终止循环
println(i)
}
// 输出:1 2
2. continue 语句
continue 用于跳过当前循环的剩余代码,直接进入下一次循环迭代。
示例
for (i in 1..5) {
if (i == 3) continue // 跳过 i=3 的循环体
println(i)
}
// 输出:1 2 4 5
3. return 语句
return 用于从函数中返回结果或提前结束函数执行。在 Lambda 表达式中,return 默认从外层函数返回(非局部返回)。
示例
fun findFirstEven(numbers: List<Int>): Int? {
for (num in numbers) {
if (num % 2 == 0) return num // 返回第一个偶数
}
return null
}
4. 标签(Label)
Kotlin 允许为循环或代码块添加标签(格式为 label@),结合 break、continue 或 return 实现更灵活的跳转控制。
4.1 标签与 break
outerLoop@ for (i in 1..3) {
for (j in 1..3) {
if (i == 2 && j == 2) break@outerLoop // 终止外层循环
println("i=$i, j=$j")
}
}
// 输出:
// i=1, j=1
// i=1, j=2
// i=1, j=3
// i=2, j=1
4.2 标签与 continue
outerLoop@ for (i in 1..3) {
for (j in 1..3) {
if (j == 2) continue@outerLoop // 跳过外层循环的当前迭代
println("i=$i, j=$j")
}
}
// 输出:
// i=1, j=1
// i=2, j=1
// i=3, j=1
4.3 标签与 return(Lambda 中的局部返回)
fun main() {
listOf(1, 2, 3).forEach {
if (it == 2) return@forEach // 仅退出当前 Lambda 迭代
println(it)
}
println("Done")
}
// 输出:
// 1
// 3
// Done
总结
| 语句 | 作用 | 标签结合场景 |
|---|---|---|
break | 终止当前循环 | 终止指定标签的循环 |
continue | 跳过当前迭代 | 跳过指定标签的循环的当前迭代 |
return | 退出函数或 Lambda | 从标签标记的 Lambda 中局部返回 |
