koltin lambda

3 阅读1分钟

大多数情况下,匿名函数可以为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()
}