使用Lambda表达式,以下函数可以更简洁吗?我怎样才能减少它?它正在调用FilenameFilter.accept()
Java方法。
val files = File(SECTIONS_DIR).listFiles(object : FilenameFilter {
override fun accept(dir: File?, filename: String): Boolean {
if (filename.matches(regex))
return true
else
return false
}
})
答案 0 :(得分:12)
我不确定Kotlin语法,但你可以通过直接返回布尔表达式来消除它,消除if
:
val files = File(SECTIONS_DIR).listFiles(object : FilenameFilter {
override fun accept(dir: File?, filename: String): Boolean {
return filename.matches(regex)
}
})
我相信Kotlin lambda语法看起来像这样:
val files = File(SECTIONS_DIR).listFiles { dir, filename -> filename.matches(regex) }
编辑:根据Sergey Mashkov的反馈删除不必要的括号。谢谢!
答案 1 :(得分:6)
澄清最短的形式:
val files = File(SECTIONS_DIR).listFiles { dir, filename -> filename.matches(regex) }