我有这个方法
private fun getDeviceType(): Device {
ExecuteCommand().forEach {
if (it == "my search string") {
return Device.DEVICE_1
}
}
return Device.UNKNOWN
}
其中
ExecuteCommand()
实际上执行 cat file
并返回文件内容的列表。因此,我没有执行 shell 命令,而是将其更改为
private fun getDeviceType(): Device {
File(PATH).forEachLine {
if (it == "my search string") {
return Device.DEVICE_1
}
}
return Device.UNKNOWN
}
但是现在编译器抱怨
return is not allowed here
。
如何退出关闭?
前一个示例之所以有效,是因为
forEach
是一个 内联方法,而 forEachLine
则不是。但是,您可以这样做:
private fun getDeviceType(): Device {
var device = Device.UNKNOWN
File(PATH).forEachLine {
if (it == "my search string") {
device = Device.DEVICE_1
}
}
return device
}
您可以使用文件中的
Sequence<String>
行:
private fun getDeviceType(): Device {
File(PATH).useLines { lines ->
lines.forEach {
if (it == "my search string") {
return Device.DEVICE_1
}
}
}
return Device.UNKNOWN
}
对于较小的文件,也可以将行读入列表中:
private fun getDeviceType(): Device {
File(PATH).readLines().forEach {
if (it == "my search string") {
return Device.DEVICE_1
}
}
return Device.UNKNOWN
}