Kotlin Lambda 表达式

预计阅读时间1 分 172 views

Lambda 表达式是一种匿名函数,可以直接传递给函数使用,极大地提高了代码的简洁性和可读性。

使用场景

Lambda 表达式在许多编程场景中都有广泛应用,例如:

  • 集合操作:对集合进行过滤、映射、折叠等操作。
  • 回调函数:处理异步操作或事件驱动编程。
  • 函数式编程:支持高阶函数和函数组合。

本质

Lambda 表达式是一个匿名函数,即没有名称的函数。它可以作为参数传递给其他函数,也可以作为返回值。Lambda 表达式在 Kotlin 中的本质是在声明和使用函数时提供了一种简洁的语法。

Lambda 表达式的语法

Kotlin 的 Lambda 表达式有如下基本语法:

{ 参数列表 -> 函数体 }
  • 参数列表:用逗号分隔,参数类型可以省略,Kotlin 会自动推断。
  • 函数体:可以是单行或多行表达式。

示例

val sum = { a: Int, b: Int -> a + b }
println(sum(3, 4)) // 输出 7

在这个例子中,{ a: Int, b: Int -> a + b } 就是一个 Lambda 表达式,它接受两个 Int 参数并返回它们的和。

Lambda 表达式的类型

Lambda 表达式的类型由参数类型和返回类型决定。在 Kotlin 中,函数类型通常通过 (参数类型1, 参数类型2, ...) -> 返回类型 的形式来表示,同时 Kotlin 也支持通过类型推断来隐式确定 Lambda 表达式的类型。

示例

val sum: (Int, Int) -> Int = { a, b -> a + b }

这里 sum 的类型是 (Int, Int) -> Int,表示它接受两个 Int 类型的参数并返回一个 Int 类型的结果。

具体用法

集合操作

Lambda 表达式在集合操作中非常常用。例如,使用 filter 函数来过滤集合中的元素:

val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers) // 输出 [2, 4]

回调函数

在处理异步操作时,Lambda 表达式常用于回调函数。例如,使用一个简单的回调函数来处理任务完成后的操作:

fun performTask(onComplete: () -> Unit) {
    println("Task started")
    onComplete()
}

performTask { println("Task completed") }

函数式编程

Kotlin 支持高阶函数,即可以接受函数作为参数或者返回函数的函数。Lambda 表达式在这种场景中非常有用:

fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

val result = operateOnNumbers(3, 4) { x, y -> x * y }
println(result) // 输出 12
分享此文档

Kotlin Lambda 表达式

或复制链接

本页目录