它有可能从游艇中断
是否有可能从航线中断。 我的代码:
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) }