如何使用Lamba表达式使Java方法调用在Kotlin中不那么冗长?
下面的函数可以用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 } })
我不确定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) }
编辑:根据谢尔盖·马什科夫的反馈删除不必要的括号。 谢谢!
澄清最短的形式:
val files = File(SECTIONS_DIR).listFiles { dir, filename -> filename.matches(regex) }