Lambda 表达式
概述
Lambda 表达式是 Kotlin 中一种简洁的匿名函数表示法,它允许你将函数作为参数传递给其他函数,或者将函数赋值给变量。Lambda 表达式在函数式编程中非常常见,能够显著提高代码的可读性和简洁性。
基本语法
Lambda 表达式的基本语法如下:
{ 参数列表 -> 函数体 }
参数列表:Lambda 表达式的参数,可以有多个参数,用逗号分隔。->:分隔符,用于分隔参数列表和函数体。函数体:Lambda 表达式的执行代码。
示例
val sum = { x: Int, y: Int -> x + y }
println(sum(3, 5)) // 输出: 8
在这个示例中,我们定义了一个 Lambda 表达式 sum,它接受两个整数参数 x 和 y,并返回它们的和。
无参数的 Lambda 表达式
如果 Lambda 表达式没有参数,可以省略参数列表和 ->:
val greet = { println("Hello, World!") }
greet() // 输出: Hello, World!
作为函数参数的 Lambda 表达式
Lambda 表达式经常作为高阶函数的参数使用。高阶函数是指接受一个或多个函数作为参数,或者返回一个函数的函数。
示例
fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
val result = operateOnNumbers(3, 5, { x, y -> x * y })
println(result) // 输出: 15
在这个示例中,operateOnNumbers 是一个高阶函数,它接受两个整数和一个 Lambda 表达式作为参数。Lambda 表达式定义了如何对这两个整数进行操作。
尾随 Lambda 表达式
如果 Lambda 表达式是函数的最后一个参数,可以将它放在括号外面,这种语法称为尾随 Lambda 表达式。
示例
val result = operateOnNumbers(3, 5) { x, y -> x * y }
println(result) // 输出: 15
这种写法更加简洁,尤其是在 Lambda 表达式较长时。
实践练习
练习 1: 计算列表元素的平方和
编写一个函数 sumOfSquares,它接受一个整数列表,并返回列表中所有元素的平方和。
fun sumOfSquares(numbers: List<Int>): Int {
return numbers.map { it * it }.sum()
}
val numbers = listOf(1, 2, 3, 4, 5)
println(sumOfSquares(numbers)) // 输出: 55
练习 2: 过滤偶数
编写一个函数 filterEvenNumbers,它接受一个整数列表,并返回一个只包含偶数的新列表。
fun filterEvenNumbers(numbers: List<Int>): List<Int> {
return numbers.filter { it % 2 == 0 }
}
val numbers = listOf(1, 2, 3, 4, 5, 6)
println(filterEvenNumbers(numbers)) // 输出: [2, 4, 6]
总结
Lambda 表达式是 Kotlin 中强大且灵活的工具,它使得函数式编程变得更加简洁和直观。通过本教程,你应该已经掌握了 Lambda 表达式的基本语法和使用场景。在实际编程中,Lambda 表达式将帮助你编写更清晰、更高效的代码。
下一步
接下来,我们将学习高阶函数,它与 Lambda 表达式密切相关,能够进一步提高代码的复用性和可读性。