我在Kotlin的一个循环中继续,但是我从工作室得到警告,标签不表示循环。有人能告诉我语法有什么问题吗?
以下是代码段
newRooms.forEach roomloop@ { wallRoom: WallRoom ->
val index = rooms.indexOf(wallRoom)
if(index!=-1)
{
val room = rooms[index] //get the corresponding room.
//check if the last session is same in the room.
if(wallRoom.topics.last().fetchSessions().last()==room.topics.last().fetchSessions().last())
{
continue@roomloop
}
答案 0 :(得分:2)
此处标记的lambda表达式是函数文字,而不是循环。
这里不能break
或continue
lambda表达式,因为它独立于for循环。
public inline fun <T> Array<out T>.forEach(action: (T) -> Unit): Unit {
for (element in this) action(element)
}
您可以使用return
从函数返回。
return@roomloop
请注意,下面的代码段与另一个代码段的行为相同,它们都会打印123
:
arrayOf(1, 2, 3).forEach label@ {
print(it)
return@label
}
label@ for (i in arrayOf(1, 2, 3)) {
print(i)
continue@label
}