Kotlin Lambda表达式

Lambda表达式是函数类型的对象,实质上是Kotlin匿名函数的一种特殊写法。

Lambda表达式的演化
以OnClickListener为例

完整的匿名函数

//声明函数对象
val a = fun(v: View): Unit {
    back(v)
}

//作为方法传参
img_back?.setOnClickListener(fun(v: View): Unit {
    back(v)
})

省略函数形式定义

//声明函数对象
val a = { v: View ->
    back(v)
}
//作为方法传参
img_back?.setOnClickListener({ v: View ->
    back(v)
})

Lambda表达式特殊写法

作为参数的最后一个时,可以写在括号外

img_back?.setOnClickListener() { v: View ->
    back(v)
}

匿名函数只有一个参数时,可以省略,使用it代替

img_back?.setOnClickListener() { 
    back(it)
}

调用函数只有一个传参,即Lambda表达式代表的函数对象时,可省略()

img_back?.setOnClickListener { 
    back(it)
}

返回值
Lambda 的返回值不是用 return 来返回,而是直接取最后一行代码的值。使用return时,是作为它外层函数的返回值来直接结束外层函数。

你可能感兴趣的:(Kotlin Lambda表达式)