Kotlin 有可能从前斜线突破吗

Kotlin 有可能从前斜线突破吗,kotlin,Kotlin,是否有可能从前斜线中断。我的代码: fun test() { bufferedReader.forEachLine { val nameParam = it.split(":")[0] if (name == "test") return // here i wan to return from function } } 我试过了return@foreachli

是否有可能从前斜线中断。我的代码:

       fun test() {
        bufferedReader.forEachLine {
            val nameParam = it.split(":")[0]
            if (name == "test")
                return // here i wan to return from function
        }
    }

我试过了return@foreachline'但它只是继续到下一行

不,它不是:非本地返回仅支持,而不是内联返回,因此您只能使用
return@forEachLine退出lambda的

另一种方法是先读取行,然后在其上迭代:

bufferedReader.lines().use { lines ->
    for (it in lines) {
        val nameParam = it.split(":")[0]
        if (name == "test")
            break
    }
}

在这里,确保由
.lines()
创建的惰性
流在不再需要时关闭。

尚未实现自定义控件结构的中断和继续。
您可以使用
println()

以下简单的破解方法非常有效:

 val fileToScann = File("file.txt")
        fileToScan.forEachLine {
            if( it.contains("12345") ) {
                throw Exception("line found:"+it)
            }
        }
        throw Exception("line not found")
    }

您可以使用
return@forEachLine
如果“测试”从未出现,您想做什么?继续使用更多的逻辑,或者您只是想看看它是否包含“test”?