如何在 Kotlin 的 Collection API 迴圈內跳出

如何在 Kotlin 的 Collection API 迴圈內跳出

之前在寫 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 跳出迴圈的範例了。