Loops 跳出kotlin中的for循环
我有一个简单的循环和条件,但你们看下面我不能跳出循环:Loops 跳出kotlin中的for循环,loops,for-loop,kotlin,break,Loops,For Loop,Kotlin,Break,我有一个简单的循环和条件,但你们看下面我不能跳出循环: rwloop@ for (z in rendered_words.size-1 downTo 0 ) { var css_=rendered_words[z].node.attr("class") css_?.let { if (css_=="classzero") {
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:
“中断”或“继续”跨越函数或
阶级界限
它说
中断和继续在内联lambda中还不可用,但我们也计划支持它们
所以,你应该
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视为一个边界(它不是一个内部类,因为它是内联的),因此直到现在您还不能通过中断或继续来跨越它。
它说
中断和继续在内联lambda中还不可用,但我们也计划支持它们
所以,你应该
等到它的支持到来
或者改用本地返回语句
怎么做
lambda本身就是一个函数,因此您可以从它返回,这(如果它是for循环中最后一个类似于您的情况)将产生与continue相同的效果
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视为一个边界(它不是一个内部类,因为它是内联的),因此直到现在您还不能通过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
}
}
}
删除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
}
}
}
您应该能够摆脱let
。=
表达式将转换为a?.equals(b):(b===null)
您应该能够摆脱let
。=
表达式将转换为a?.equals(b):(b===null)
这是return@let
但真的打破了循环吗?他不需要像运行blabla@{…css这样的东西吗。。。return@blabla}
?(或者,由于let
在这段代码中似乎毫无意义,他可以摆脱它,正常使用break
)。那return@let
但真的打破了循环吗?他不需要像运行blabla@{…css这样的东西吗。。。return@blabla}
?(或者,由于let
在这段代码中似乎毫无意义,他可以将其去掉,然后正常使用break
)。您现在不需要标签<代码>中断
自动匹配最里面的循环构造。@MarkoTopolnik True,但代码已经包含标签,所以我没有更改它。另外,我总是在Kotlin使用标签,以防万一……你现在不需要标签<代码>中断
自动匹配最里面的循环构造。@MarkoTopolnik True,但代码已经包含标签,所以我没有更改它。另外,我总是在Kotlin中使用标签,以防万一。。。