有可能从 foreachline 中断

Jon*_*nny 4 kotlin

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

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

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

hot*_*key 5

不,它不是:非本地返回仅支持内联函数,而forEachLine { ... }不是内联函数,因此您只能使用return@forEachLine退出 lambda 的那个。

允许它的另一种方法是先读取行,然后遍历它们:

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

在这里,.use { ... }确保Stream创建的惰性.lines()一旦不再需要就关闭。