Kotlin Lambda 表达式语法

2026-07-14 17:24:27 来源: 互联网 点击数: 
Lambda 表达式的完整语法形式如下:

val sum: (Int, Int) -> Int = { x: Int, y: Int -> x + y }
Lambda 表达式总是用大括号包围。

完整语法形式中的参数声明写在大括号里,并且类型标注是可选的。

函数体放在 -> 后面。

如果 lambda 推断出的返回类型不是 Unit,lambda 体内最后一个(或唯一一个)表达式会被当作返回值。

如果你把所有可选的标注都去掉,剩下的就像这样:

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

上面的 lambda 表达式语法缺少一件事——指定函数的返回类型。在大多数情况下,这没什么必要,因为返回类型可以自动推断。
不过,如果你确实需要显式指定,可以使用另一种语法:
匿名函数。
fun(x: Int, y: Int): Int = x + y
匿名函数看起来很像普通的函数声明,只是省略了名字。它的主体可以是一个表达式(如上所示)或者一个代码块:
fun(x: Int, y: Int): Int {
    return x + y
}
参数和返回类型的指定方式和普通函数一样,只是如果参数类型可以从上下文推断出来,可以省略不写:
ints.filter(fun(item) = item > 0)
匿名函数的返回类型推断和普通函数一样:如果匿名函数有表达式体,返回类型会自动推断,但如果是块体的匿名函数,就必须显式指定返回类型(或者默认是 Unit)。
在把匿名函数作为参数传递时,把它们放在括号里。那种允许你把函数放在括号外的简写语法只对 lambda 表达式有效

lambda 表达式和匿名函数的另一个区别是非局部返回的行为。
没有标签的 return 语句总是从用 fun 关键字声明的函数返回。
这意味着 lambda 表达式中的 return 会从外层函数返回,而匿名函数中的 return 会从匿名函数本身返回。


上一篇:蛋挞,蛋挞
下一篇:返回列表
关键字:

河池新闻

图说城市 图说天下

阅读排行 阅读排行


爱河池