如何使用 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) }