Kotlin最简单的入门教程——神秘的Lambda

时间:2022-07-10 15:39:20

Lambda 表达式

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

例如:

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

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

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

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

匿名函数

匿名函数看起来非常像一个常规函数声明,除了其名称省略了。其函数体 可以是表达式(如上所示)或代码块:

fun(x: Int, y: Int): Int = x + y
fun(x: Int, y: Int): Int {
return x + y
}

Lambda 表达式或者匿名函数(以及局部函数和对象表达式) 可以访问其 闭包 ,即在外部作用域中声明的变量。 与 Java 不同的是可以修改闭包中捕获的变量:

var sum = 0
ints.filter { it > 0 }.forEach {
sum += it
}
print(sum)

高阶函数

高阶函数是将函数用作参数或返回值的函数。



最后欢迎加入Kotlin QQ群,一起讨论学习:

Kotlin最简单的入门教程——神秘的Lambda

欢迎关注 微信公号

Kotlin最简单的入门教程——神秘的Lambda