8.2.11 Lambda 表达式
我们也可以直接使用更简单的Lambda表达式来实现一个predicate函数:
1. list.filter {
2. it % 2 == 1
3. }
- lambda 表达式总是被大括号
{}括着 - 其参数(如果有的话)在
->之前声明(参数类型可以省略) - 函数体(如果存在的话)在
->后面
上面的写法跟:
1. list.filter({
2. it % 2 == 1
3. })
等价,如果 lambda 是该调用的唯一参数,则调用中的圆括号可以省略。
使用Lambda表达式定义一个函数字面值:
1. >>> val sum = { x: Int, y: Int -> x + y }
2. >>> sum(1,1)
3. 2
我们在使用嵌套的Lambda表达式来定义一个柯里化的sum函数:
1. >>> val sum = {x:Int -> {y:Int -> x+y }}
2. >>> sum
3. (kotlin.Int) -> (kotlin.Int) -> kotlin.Int
4. >>> sum(1)(1)
5. 2
