今天我们讨论的是 Kotlin 中的高阶函数。
背景
如果您是 Android 开发人员,那么您和我一样是 Kotlin 语言的爱好者。Kotlin 是一种现代编程语言,具有许多功能,并且在每个版本中都添加了更多功能。
如果您在 Android 开发中使用 Java,那么您就知道 Kotlin 语言的重要性,并且非常了解它丰富的库和功能。 高阶函数是其他 Kotlin 特性中的特性之一,我发誓你曾经在你的 android 之旅中使用过它,并且对它了解一点。如果不是这样,这个博客是专门为你准备的。
高阶函数:
在简单的单词中,高阶函数是那些接受函数作为参数或返回函数或两者兼而有之的函数。
在参数中传递函数
我们可以通过两种方式将 lambda 表达式作为参数传递给高阶函数。
- 返回 Unit 的 Lambda 表达式
- 返回任何值的 Lambda 表达式,如 Int、String 等。
请参阅示例:
// lambda expression
val hashnode = {
println("Hashnode: Developer Blog Plateform.")
}
// higher-order function
fun higherfunc( lmbd: () -> Unit ) { // accepting lambda as parameter
lmbd.invoke() //invokes lambda expression
}
fun main() {
higherfunc(hashnode)
}
您在上面的示例中看到,我们将 lambda 作为参数传递给函数。
我们可以在高阶函数中传递普通函数而不是 lambda 表达式。
从另一个函数返回一个函数:
正如高阶函数的定义一样,我们可以从 Kotlin 中的另一个函数返回一个函数。让我们看第一个例子。
fun sumOfTwoNum(a: Int, b: Int): Int{
return a+b
}
//higher-order function declaration
fun higherfunc() : ((Int,Int)-> Int){
return ::sumOfTwoNum
}
fun main() {
// invoke function and store the returned function into a variable
val summation = higherfunc()
// invokes the sumOfTwoNum() function by passing arguments
val result = summation(8,12)
println("The summation of two numbers is: $result")
}
如您所见,我们定义了一个函数 sumOfTwoNum() 函数,它接受两个参数,它的返回类型是整数。之后我们定义了一个高阶函数,它接受两个整数参数,返回类型与 sumOfTwoNum() 函数相同。
最后我们调用 sumOfTwoNum() ,只需在 Higherfunc(8,12) 中传递两个 int 值,然后返回结果中的总和。
结论
这就是高阶函数。easy-peasy!同样,高阶函数是那些在参数或返回函数中接受函数或两者都接受的函数。
为了帮助哪些想要入门或深入的学习 Kotlin小伙伴 ,我近日整理发布一份《高级Kotlin强化实战学习手册(附Demo)》供Android开发者进阶学习 Kotlin,内容涵盖 Kotlin 入门教程、Kotlin实战避坑指南、Kotlin Jetpack 实战三大模块。
《高级Kotlin强化实战学习手册(附Demo)》点击这里
第一章 Kotlin入门教程
-
Kotlin 概述
-
Kotlin 与 Java 比较
-
巧用 Android Studio
-
认识 Kotlin 基本类型
-
走进 Kotlin 的数组
-
走进 Kotlin 的集合
-
集合问题
-
完整代码
-
基础语法

第二章 Kotlin 实战避坑指南
-
方法入参是常量,不可修改
-
不要 Companion 、INSTANCE ?
-
Java 重载,在 Kotlin 中怎么巧妙过渡一下?
-
Kotlin 中的判空姿势
-
Kotlin 复写 Java 父类中的方法
-
Kotlin “狠”起来,连TODO 都不放过!
-
is、as` 中的坑
-
Kotlin 中的 Property 的理解
-
also 关键字
-
takeIf 关键字
-
takeIf 关键字
-
单例模式的写法

第三章 项目实战《Kotlin Jetpack 实战》
-
从一个膜拜大神的 Demo 开始
-
Kotlin 写 Gradle 脚本是一种什么体验?
-
Kotlin 编程的三重境界
-
Kotlin 高阶函数
-
Kotlin 泛型
-
Kotlin 扩展
-
Kotlin 委托
-
协程“不为人知”的调试技巧
-
图解协程:suspend

网友评论