它有可能从游艇中断

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

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

我试过’return @ foreachline’,但它只是继续下一行

不,不是:非内部返回仅支持内联函数 ,而forEachLine { ... }不是内联函数 ,因此只能使用return@forEachLine lambdaexpression式的return@forEachLine

允许它的替代方法是先读取行,然后遍历它们:

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

在这里, .use { ... }可以确保由.lines()创建的惰性Stream在不再需要时关闭。

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

只有当它是内联函数时,才可以从函数参数闭包中返回。 所以你可以做另外一个函数来使内联(比如内联包装器)。

 fun test() { bufferedReader.forEachLineInlined { val nameParam = it.split(":")[0] if (name == "test") return // here i wan to return from function } } inline fun Reader.forEachLineInlined(action: (String) -> Unit) { this.forEachLine(action) }