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