0%

Kotlin小tipsforeach中实现continue和break

1.continue实现

1
2
3
4
5
6
7
fun foo() {
listOf(1, 2, 3, 4, 5).forEach {
if (it == 3) return@forEach // 局部返回到该 lambda 表达式的调用者,即 forEach 循环
print(it)
}
print(" done with implicit label")
}

此时,return就实现了continue的功能,代码输入1245,不输出3

2.break实现

1
2
3
4
5
6
7
8
9
fun foo() {
run loop@{
listOf(1, 2, 3, 4, 5).forEach {
if (it == 3) return@loop // 从传入 run 的 lambda 表达式非局部返回
print(it)
}
}
print(" done with nested loop")
}

使用run{}将foreach包裹起来,然后局部返回,此时跳出循环,实现了break的功能。代码输出12,不输出345

3.小彩蛋,跳出函数

1
2
3
4
5
6
7
fun foo() {
listOf(1, 2, 3, 4, 5).forEach {
if (it == 3) return // 非局部直接返回到 foo() 的调用者
print(it)
}
println("这行打印函数,执行不到")
}

此时,直接跳出foo()函数,下面的打印函数不执行。