如何使用 Lambda 表达式使 Java 方法调用在 Kotlin 中不那么冗长?
How to use Lamba expression to make Java method calls less verbose in Kotlin?
下面的函数可以使用 Lambda 表达式更简洁吗?我怎样才能把它trim 下来?它正在调用 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
}
})
我不确定 Kotlin 语法,但您肯定可以 trim 通过直接返回布尔表达式来消除 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 的反馈删除了不必要的括号。谢谢!
阐明最短形式:
val files = File(SECTIONS_DIR).listFiles { dir, filename -> filename.matches(regex) }
下面的函数可以使用 Lambda 表达式更简洁吗?我怎样才能把它trim 下来?它正在调用 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
}
})
我不确定 Kotlin 语法,但您肯定可以 trim 通过直接返回布尔表达式来消除 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 的反馈删除了不必要的括号。谢谢!
阐明最短形式:
val files = File(SECTIONS_DIR).listFiles { dir, filename -> filename.matches(regex) }