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时,是作为它外层函数的返回值来直接结束外层函数。
网友评论