kotlin: 函数类型作为函数返回值
一,例子
代码:
//处理按钮点击事件
binding.button1.setOnClickListener {
// 函数的返回值 是函数类型
fun returnFun(): (String)->String {
return { name: String ->
"Hello $name"
}
}
// 接收函数类型的返回值
var fun0 = returnFun(); //返回的fun0是一个函数
// 执行 返回的 函数
var str = fun0("Tom")
println("fun0(\"Tom\")的结果:"+str)
//返回为函数类型
fun getMultiplier(factor: Int): (Int) -> Int {
return { num -> num * factor }
}
//调用
val triple = getMultiplier(3) //返回的triple是一个函数
println("triple(4)的结果:"+triple(4)) // 输出 12
println("getMultiplier(3).invoke(4)的结果:"+getMultiplier(3).invoke(4)) // 输出 12
}
运行结果:

二,例子
代码:
//处理按钮点击事件
binding.button2.setOnClickListener {
//Lambda 作为函数返回值
fun getOperator(): (Int, Int) -> Int {
return { x, y -> x + y }
}
//add这个变量的类型: (Int, Int) -> Int
val add = getOperator()
println("add(10, 5) 的结果:"+add(10, 5)) // 输出 15
println("getOperator().invoke(10,5) 的结果:"+getOperator().invoke(10,5))
}
运行结果:
![]()
三,例子
代码:
//处理按钮点击事件
binding.button3.setOnClickListener {
//函数类型 作为operate函数的参数
fun operate(a: Int, b: Int, op: (Int, Int) -> Int): Int {
return op(a, b)
}
val multi = fun(x: Int, y: Int) = x * y
val result1 = operate(3, 4, multi)
println("operate(3, 4, multi) 的结果:"+result1) // 输出 12
val result2 = multi(5,6)
println("multi(5,6) 的结果:"+result2) // 输出 30
//定义返回值为表达式
val multi2 = fun(x: Int, y: Int) = {x * y}
val result3 = multi2(5,6).invoke()
println("multi2(5,6).invoke() 的结果:"+result3) // 输出 30
}
运行结果:

浙公网安备 33010602011771号