Kotlin笔记-013Lambda表达式

117 阅读1分钟

Lambda 表达式

Kotlin 上的 Lambda 表达式本质上是匿名函数的语法糖。

当定义一个函数,函数没有名称时,可使用 Lambda 表达式,直接写函数体赋值给变量,省略函数名称。

// 匿名函数定义给变量 func
val func: () -> Unit = fun() {
    println("Hello")
}
// 转成Lambda表达式
val func2: () -> Unit = {
    println("Hello")
}

// Lambda 表达式最后一行为返回值
val lam: (Int) -> String = { index ->
    val result: Int = index + 1
    result.toString()
}

Kotlin 与 Java 中的 Lambda 表达式的区别在于:

Kotlin 中的 Lambda 表达式本身是一个函数,只是没有名称,而函数是有对应的类型的,所以 Lambda 表达式可赋值给变量。

Java8 中的 Lambda 表达式的类型必须是符合 SAM 的接口,只有符合 SAM 的接口才支持 Lambda 表达式。

Lambda 表达式

Kotlin 上的 Lambda 表达式本质上是匿名函数的语法糖。

当定义一个函数,函数没有名称时,可使用 Lambda 表达式,直接写函数体赋值给变量,省略函数名称。

// 匿名函数定义给变量 func
val func: () -> Unit = fun() {
    println("Hello")
}
// 转成Lambda表达式
val func2: () -> Unit = {
    println("Hello")
}

// Lambda 表达式最后一行为返回值
val lam: (Int) -> String = { index ->
    val result: Int = index + 1
    result.toString()
}

Kotlin 与 Java 中的 Lambda 表达式的区别在于:

Kotlin 中的 Lambda 表达式本身是一个函数,只是没有名称,而函数是有对应的类型的,所以 Lambda 表达式可赋值给变量。

Java8 中的 Lambda 表达式的类型必须是符合 SAM 的接口,只有符合 SAM 的接口才支持 Lambda 表达式。