之前在寫 Java 的時候,從迴圈跳出的方法有 break、continue 和 return,但是,Kotlin 除了基本迴圈以外,還有很多高階函式,那要怎麼從這些迴圈或高階函式內跳出呢?
說明
假設有一個陣列如下。
val list = arrayOf(1, 2, 3)
接著我們想要在迴圈內讓某條件成立之下,就跳出迴圈,可以使用 break。
for(i in list){
if(i == 3){
break
}
}
如果想要在某條件成立之下,做某些事情,但是迴圈繼續跑,可以使用 continue。
for(i in list){
if(i == 3){
continue
}
}
但是如果你要在 Collection API 使用,就無法使用上面的方式,要透過 return@xxx 的方式來進行 break 或者 continue 的操作。
list.forEach {
if (it == 2) {
println("return")
return@forEach
}
println("loop:$it")
}
output:
loop:1
return
loop:3
- break 操作
你會發現執行 outside 後並不會繼續執行下去。
run outside@{
list.forEach {
if (it == 2) {
println("outside")
return@outside
}
println("loop:$it")
}
}
output:
loop:1
outside
這樣就是一個簡單的 Collection API 跳出迴圈的範例了。