closures - 从 forEachLine 返回

标签 closures kotlin

我有这个方法

private fun getDeviceType(): Device {
    ExecuteCommand().forEach {
        if (it == "my search string") {
            return Device.DEVICE_1
        }
    }
    return Device.UNKNOWN
}

其中ExecuteCommand()实际上执行一个cat文件并返回文件内容的列表。因此,我没有执行 shell 命令,而是将其更改为

private fun getDeviceType(): Device {
    File(PATH).forEachLine {
        if (it == "my search string") {
            return Device.DEVICE_1
        }
    }
    return Device.UNKNOWN
}

但现在编译器提示此处不允许返回

如何退出关闭?

最佳答案

前一个示例之所以有效,是因为 forEachinline method ,而 forEachLine 则不是。但是,您可以这样做:

private fun getDeviceType(): Device {
    var device = Device.UNKNOWN
    File(PATH).forEachLine {
        if (it == "my search string") {
            device = Device.DEVICE_1
            return@forEachLine // Exits the closure only
        }
    }
    return device
}

关于closures - 从 forEachLine 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44108489/

相关文章:

javascript - 在另一个函数中 momoizing 函数时出现多个错误

javascript - 是否可以在闭包中使用外部定义的函数

json - "let JSON"在 Alamofire/Swift 中如何工作

JavaScript 闭包 - 使用 ECMA 规范,请解释闭包是如何创建和维护的

android-studio - 在 Android Studio 中运行单个 .kt 文件

android - TextViews不在约束布局中移至“开始”位置

java - snackbar 设置操作文本始终返回大写字母

设置超时时的 JavaScript 闭环问题

intellij-idea - 其元数据的二进制版本为 1.0.1,预期版本为 1.1.0

java - 为什么Spring过滤器总是被调用?