我正在使用一种工具来帮助我浏览日志文件,并决定同时学习Kotlin。 (我是该语言的新手,所以如果这个问题显而易见,我深表歉意。)现在,我想读取一个日志文件并将每一行与几个正则表达式进行比较。根据要匹配的颜色,我想使用其他颜色。我将这些返回到UI列表中以处理显示它们
这是我当前代码中遇到的问题:
List<LineAndStyle>
而不是变成List<Any>
。fun process(file: File): List<LineAndStyle> {
val result = file.useLines {
it.filter { line ->
exceptionsPattern.containsMatchIn(line) ||
networkPattern.containsMatchIn(line) ||
dataPattern.containsMatchIn(line)
}.map { line ->
when {
exceptionsPattern.containsMatchIn(line) -> LineAndStyle(line, Color.PINK)
networkPattern.containsMatchIn(line) -> LineAndStyle(line, Color.LIGHTBLUE)
dataPattern.containsMatchIn(line) -> LineAndStyle(line, Color.LIGHTGREEN)
else -> {
LineAndStyle(line, Color.BLACK)
}
}
}.toList()
}
return result
}
请帮助我了解Kotlin中惯用的方式。
答案 0 :(得分:2)
怎么样?
fun process(file: File): List<LineAndStyle> =
file.useLines { lines ->
lines.mapNotNull { line ->
when {
exceptionsPattern.containsMatchIn(line) -> LineAndStyle(line, Color.PINK)
networkPattern.containsMatchIn(line) -> LineAndStyle(line, Color.LIGHTBLUE)
dataPattern.containsMatchIn(line) -> LineAndStyle(line, Color.LIGHTGREEN)
else -> null
}
}.toList()
}