如何在Kotlin中使用Lambda表达式使Java方法调用更简洁?

时间:2015-03-09 15:45:54

标签: java lambda 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
            }
        })

2 个答案:

答案 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) }