一,代码:
//处理按钮点击事件,创建一个假数据,保存到viewmodel
binding.button1.setOnClickListener {
//只有一个函数类型作为函数参数
fun highOrderFunction(operation: (Int, Int) -> Int): Int {
return operation(10, 20)
}
//当 Kotlin 只有一个 Lambda 作为函数参数时,() 可以被省略
val result = highOrderFunction { a, b -> a + b }
println("highOrderFunction { a, b -> a + b } 的结果:"+result) // 输出 30
//Kotlin 允许在 只有一个参数 的 Lambda 表达式中,使用 it 作为默认参数名称,省略显式声明。
val square1: (Int) -> Int = { it * it } //省略参数
val square2: (Int) -> Int = { x -> x * x } //不省略参数
val res1 = square1(5)
val res2 = square2(5)
println("square1(5) 的结果:"+res1) // 输出 25
println("square2(5) 的结果:"+res2) // 输出 25
//两个及以上参数时,必须显式声明
// 两个参数,必须显式声明
val add2: (Int, Int) -> Int = { a, b -> a + b }
println("add2(3, 4)的结果:"+add2(3, 4)) // 输出 7
//函数体的省略
//当函数可以通过单个表达式完成时,可省略 {} 并用 = 直接返回结果,编译器会自动推导返回值类型
// 等价于代码块函数体,但更简洁
fun myAdd1(a: Int, b: Int) = a + b
//当函数需要执行多行逻辑时使用,必须显式声明返回值(如果有返回值)
// 完整函数体(包含 return)
fun myAdd2(a: Int, b: Int): Int {
val sum = a + b
return sum
}
println("myAdd1(2, 7)的结果:"+myAdd1(2, 7)) // 输出 9
println("myAdd2(2, 7)的结果:"+myAdd2(2, 7)) // 输出 9
}
二,运行结果: