lambda表达式
匿名的函数类型的字面量
val sum: (Int, Int) -> Int = { x: Int, y: Int -> x + y }
在 Kotlin 中有一个约定:如果函数的最后一个参数是函数,那么作为相应参数传入 的 lambda 表达式可以放在圆括号之外:
val product = items.fold(1) { acc, e -> acc * e }
引用的三种形式
如下所示:
open class PdfPrinter {
fun println(any: Any) {
kotlin.io.println(any)
}
}
val pdfPrinter = PdfPrinter()
val list = listOf("a", "b", "c", "", "d")
list.forEach(::println)
// 隐式地通过String对象调用isNotEmpty()
// 需显示地通过pdfPrinter对象调用println()
list.filter(String::isNotEmpty).forEach(pdfPrinter::println)