大多数情况下,匿名函数可以为Lambda表达式的形式。kotlin中的匿名函数本质不是函数而是对象,Lambda表达式本质也是对象
view.setOnclickListener(fun(v: View) -> Unit){
switchToNextPage()
}
//转换为Lambda表达式
view.setOnclickListener(v: View -> {
switchToNextPage()
})
//如果Lambda是函数的最后一个参数,可以把Lambda写在函数外面
view.setOnclickListener(){ v: View ->
switchToNextPage()
}
//如何该Lambda是函数的唯一参数,可以直接去掉括号
view.setOnclickListener { v: View ->
switchToNextPage()
}
//如何该Lambda是单参数的,参数可以直接省略不写
view.setOnclickListener{
switchToNextPage()
}
//即使要用到这个单参数的,仍然可以省略不写,可以用it指代
view.setOnclickListener{
switchToNextPage()
it.setVisibility(Gone)
}
把匿名函数赋值给一个变量,而不是作为参数传递时
val b = fun(param: Int): String {
return param.toString()
}
//后续调用
val result = b(10) // 假设传入参数 10,这里的 10 可以替换为任何整数
println(result)
把Lambda表达式赋值给一个变量
val b: (Int) -> String {
// return it.toString() 注意Lambda返回值不能写return
it.toString()
}