這個是在kotlin中遍歷集合時,使用標籤的過程中,可能會遇到的小錯誤。
提示的字面上的資訊,就是在forEach中這個標籤不能表示為loop(也就是迴圈),錯誤事例如下:
list.forEach loop@{
if (it == "外面還很黑") {
continue @loop
}
}
複製程式碼
這裡使用continue,和break都會報錯。使用return就會正常了,讓我們看看原始碼:
/**
* Performs the given [action] on each element.
*/
@kotlin.internal.HidesMembers
public inline fun <T> Iterable<T>.forEach(action: (T) -> Unit): Unit {
for (element in this) action(element)
}
複製程式碼
很明顯forEach是一個fun,並不是一個loop
那麼相對應的,在for 迴圈中使用return 也同樣會報錯。錯誤程式碼如下:
loop@ for (i in 0..4)
for (j in 5..9) {
if (j == 8) {
return@loop
}
}
複製程式碼
這個時候編譯器會給一個warn:Target label does not denote a function
改正:我們可以使用continue,或者break,看你的實際情況來定
Returns and Jumps
Kotlin has three structural jump expressions:
- return. By default returns from the nearest enclosing function or anonymous function.
- break. Terminates the nearest enclosing loop.
- continue. Proceeds to the next step of the nearest enclosing loop.
我是翻譯二把刀,你們自己看吧 還想了解一下kotlin中的迴圈的,請走這邊blog.csdn.net/u010844304/…