kotlin中跳出for循环
Jump out of for loop in kotlin
我有这个简单的循环和条件,但是你看下面我无法跳出循环:
rwloop@ for (z in rendered_words.size-1 downTo 0 )
{
var css_=rendered_words[z].node.attr("class")
css_?.let {
if (css_=="classzero") {
break@rwloop
}
}
}
但是我在 break@rwloop 收到这个错误:
break' or 'continue' jumps across a function or a
class boundary
https://kotlinlang.org/docs/reference/inline-functions.html#non-local-returns
它指出
break and continue are not yet available in inlined lambdas, but we are planning to support them too.
所以,你应该
- 等到它的支持到来
- 或使用本地return语句代替,
如何?
lambda 本身就是一个函数,因此您可以从中 return,这(如果它像您的情况一样是 for 循环中的最后一件事)将产生与 continue[=15= 相同的效果]
rwloop@ for(z in rendered_words.size-1 downTo 0 ) {
var css_=rendered_words[z].node.attr("class")
css_?.let {
if (css_=="classzero") {
return@let
}
}
}
Kotlin 将 lambda 视为边界(它不是内部 class 因为它是内联的),所以你不能通过 break
或 continue
到现在.
删除 let lambda,因为@rwloop 标签在其中不可见,并使用它:
rwloop@ for (z in rendered_words.size-1 downTo 0 )
{
var css_=rendered_words[z].node.attr("class")
if (css_ != null) {
if (css_=="classzero") {
break@rwloop
}
}
}
我有这个简单的循环和条件,但是你看下面我无法跳出循环:
rwloop@ for (z in rendered_words.size-1 downTo 0 )
{
var css_=rendered_words[z].node.attr("class")
css_?.let {
if (css_=="classzero") {
break@rwloop
}
}
}
但是我在 break@rwloop 收到这个错误:
break' or 'continue' jumps across a function or a class boundary
https://kotlinlang.org/docs/reference/inline-functions.html#non-local-returns
它指出
break and continue are not yet available in inlined lambdas, but we are planning to support them too.
所以,你应该
- 等到它的支持到来
- 或使用本地return语句代替,
如何?
lambda 本身就是一个函数,因此您可以从中 return,这(如果它像您的情况一样是 for 循环中的最后一件事)将产生与 continue[=15= 相同的效果]
rwloop@ for(z in rendered_words.size-1 downTo 0 ) {
var css_=rendered_words[z].node.attr("class")
css_?.let {
if (css_=="classzero") {
return@let
}
}
}
Kotlin 将 lambda 视为边界(它不是内部 class 因为它是内联的),所以你不能通过 break
或 continue
到现在.
删除 let lambda,因为@rwloop 标签在其中不可见,并使用它:
rwloop@ for (z in rendered_words.size-1 downTo 0 )
{
var css_=rendered_words[z].node.attr("class")
if (css_ != null) {
if (css_=="classzero") {
break@rwloop
}
}
}