当前位置: 首页> 房产> 建筑 > 免费注册网_住房和城乡建设部2019年安全生产工作要点_营销模式和营销策略_seo网络培训班

免费注册网_住房和城乡建设部2019年安全生产工作要点_营销模式和营销策略_seo网络培训班

时间:2025/8/13 7:08:46来源:https://blog.csdn.net/liuzhuo13396/article/details/146968189 浏览次数:0次
免费注册网_住房和城乡建设部2019年安全生产工作要点_营销模式和营销策略_seo网络培训班

在 Kotlin 中,高阶函数(Higher-Order Function)是指接受函数作为参数或者返回一个函数的函数。这个概念乍一看可能有点抽象,但通过一个简单的例子,你会发现它的用法非常直观。

1. 什么是高阶函数?

普通函数 只能接受基本数据类型或者对象作为参数,例如:

fun add(a: Int, b: Int): Int {return a + b
}

高阶函数 则可以接受一个函数作为参数,例如:

fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {return operation(a, b)
}

这里 operation 是一个参数,它本质上是一个函数 operation: (Int, Int) -> Int,可以在 operateOnNumbers 内部被调用。

2. 传递函数,而不是直接执行

如果你直接调用 operateOnNumbers(5, 3, add(5, 3)),会报错,因为 add(5, 3) 会先执行,并返回 8,而 operateOnNumbers 需要的是一个函数,而不是一个 Int

正确的写法应该是

val add = { x: Int, y: Int -> x + y } // 直接定义一个 Lambda 表达式val result = operateOnNumbers(5, 3, add) // 传递函数,而不是执行它
println(result) // 输出 8

我们也可以直接传递一个 Lambda 表达式:

val result = operateOnNumbers(5, 3) { x, y -> x + y }
println(result) // 输出 8

这就是传递函数,而不是直接执行的核心概念!

3. 使用高阶函数实现接口回调

在 Android 开发或者回调机制中,我们经常使用接口来实现事件回调。在 Kotlin 中,高阶函数可以替代传统的接口回调,使代码更简洁。

传统 Java 接口回调(需要定义接口并实现)
interface OnItemClickListener {void onItemClick(String item);
}class Adapter {private OnItemClickListener listener;public void setOnItemClickListener(OnItemClickListener listener) {this.listener = listener;}void bindView(String item) {button.setOnClickListener(v -> {if (listener != null) {listener.onItemClick(item);}});}
}
Kotlin 高阶函数方式(更简洁)
class ItemAdapter {var onItemClickListener: ((String) -> Unit)? = nullfun bindView(item: String) {button.setOnClickListener {onItemClickListener?.invoke(item)}}
}fun main() {val adapter = ItemAdapter()adapter.onItemClickListener = { item ->println("Item clicked: $item")}adapter.bindView("Hello") // 模拟点击事件
}

在这里,onItemClickListener 作为一个高阶函数存储回调,并在 setOnClickListener 里被调用。这种方式比传统接口回调更简洁、灵活。

4. 为什么要用高阶函数?

高阶函数可以让代码更加灵活,比如我们可以很容易地替换不同的逻辑,而不用修改 operateOnNumbers 的代码:

val subtract = { x: Int, y: Int -> x - y }
val multiply = { x: Int, y: Int -> x * y }println(operateOnNumbers(5, 3, subtract)) // 输出 2
println(operateOnNumbers(5, 3, multiply)) // 输出 15

这样,operateOnNumbers 变成了一个通用的计算框架,可以适用于加法、减法、乘法等不同的计算方式,而无需为每种计算方式编写单独的函数。

5. 结论

高阶函数的核心思想是将函数作为参数传递,而不是直接执行。这样可以使代码更加灵活、可复用,并且提高了代码的抽象能力。掌握这个概念后,你会在 Kotlin 的各种 API(如 mapfilter)中发现它的身影,并能够更高效地编写代码!

关键字:免费注册网_住房和城乡建设部2019年安全生产工作要点_营销模式和营销策略_seo网络培训班

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: