3.1Lambda

Lambda 表达式语法

Lambda 表达式的完整语法形式,即函数类型的字面值如下:

val sum = { x: Int, y: Int -> x + y }

lambda 表达式总是被⼤括号括着, 完整语法形式的参数声明放在括号内,并有可选的类型标注, 函数体跟在一个 -> 符号之后。如果推断出的该lambda 的返回类型不是 Unit ,那么该 lambda 主体中的最后一个(或可能是单个)表达式会视为返回值。

如果我们把所有可选标注都留下,看起来如下:

val sum: (Int, Int) -> Int = { x, y -> x + y }

一个 lambda 表达式只有一个参数是很常见的。 如果 Kotlin 可以自己计算出签名,它允许我们不声明唯一的参数,并且将隐含地 为我们声明其名称为it

ints.filter { it > 0 } // 这个字面值是“(it: Int) -> Boolean”类型的

我们可以使⽤限定的返回语法从 lambda 显式返回一个值。否则,将隐式返回最后⼀个表达式的值。因此,以下两个片段是等价的:

ints.filter {
	val shouldFilter = it > 0
	shouldFilter
}

ints.filter {
	val shouldFilter = it > 0
	return@filter shouldFilter
}

请注意,如果一个函数接受另一个函数作为最后一个参数,lambda 表达式参数可以在 圆括号参数列表之外传递。


[上一篇:2.9数组(集合)与区间] [返回目录] [下一篇:3.2运算符 in,is,as]