Lambda 表达式
{ -> } 语法、it 隐式参数、函数类型、SAM 转换
Lambda 表达式
Lambda 是 Kotlin 的一等公民——用 { } 包裹,it 代表单个参数。
学完本章你将: 掌握 { -> } 语法、it 隐式参数、函数类型。
基本语法
kotlin
// 完整写法
val sum: (Int, Int) -> Int = { a: Int, b: Int -> a + b }
// 类型推断——简化
val sum = { a: Int, b: Int -> a + b }
// 调用
println(sum(3, 5)) // 8
it 隐式参数
kotlin
// 只有一个参数时——用 it
val double: (Int) -> Int = { it * 2 }
val printIt: (String) -> Unit = { println(it) }
println(double(5)) // 10
尾随 Lambda
kotlin
// 如果最后一个参数是 lambda——可以写在括号外
list.filter({ it > 3 }) // 普通
list.filter { it > 3 } // 尾随(推荐)
函数类型
kotlin
val action: () -> Unit = { println("执行") }
val transform: (String) -> Int = { it.length }
val combine: (Int, Int) -> String = { a, b -> "$a + $b = ${a+b}" }
SAM 转换
kotlin
// Kotlin lambda 自动转换为 Java 单抽象方法接口
button.setOnClickListener { view ->
println("点击了")
}