Z
ZHANK
函数

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("点击了")
}