kotlin: lambda表达式作函数参数
一,例子
定义函数:
//定义函数,参数action是一个函数类型
fun doSomething(action: () -> String) {
val act = action();
println(act)
}
//定义函数,其中最后一个参数是函数类型
fun studentDoSomething(name: String, age: Int, action: (String, Int) -> String) {
val act = action(name, age);
println(act)
}
代码:
//处理按钮点击事件
binding.button1.setOnClickListener {
// 定义函数类型变量, 之后作为函数参数传递给函数
val actionFun = { name: String, age: Int ->
"学生 $name ,现年 $age 岁, 是我校三年级学生"
}
// 调用 studentDoSomething 函数, 输入姓名, 年龄, 执行的操作
studentDoSomething("Tom", 18, actionFun);
//直接使用匿名函数作为函数参数
// 调用 studentDoSomething 函数, 输入姓名, 年龄, 执行的操作
studentDoSomething("老王", 19, { name: String, age: Int ->
"学生 $name ,现年 $age 岁, 是我校三年级学生"
})
//匿名函数 , 也就是 Lambda 表达式 作为最后一个参数 , 可以提取到括号外面
// 调用 studentDoSomething 函数, 输入姓名, 年龄, 执行的操作
studentDoSomething("王富贵", 20) { name: String, age: Int ->
"学生 $name ,现年 $age 岁, 是我校三年级学生"
}
}
运行结果:
![]()
二,例子
代码:
//处理按钮点击事件
binding.button2.setOnClickListener {
// 调用 doSomething 函数, 传入 Lambda 表达式 / 匿名函数
doSomething({
"Hello World 1"
})
//如果 Lambda 表达式 作为 函数参数 , 并且 该参数是 唯一参数 ,
// 那么 Lambda 表达式外面的圆括号可以省略
doSomething {
"Hello World 2"
}
}
运行结果:

浙公网安备 33010602011771号