Kotlin 基础(三):函数及高阶函数初探
2023-11-19 21:13:54
函数及高阶函数
函数是编程语言的基石,在 Kotlin 中,函数可以像变量一样被赋值给变量或作为参数传递给其他函数。Kotlin 函数可以是顶层函数或成员函数,顶层函数在文件或类作用域之外定义,而成员函数在类或对象中定义。
Kotlin 还支持高阶函数,高阶函数可以接收其他函数作为参数,或将函数作为返回值。这种特性使 Kotlin 非常适合函数式编程。
中缀表述法
中缀表述法允许我们使用中缀操作符来调用函数,中缀操作符位于两个操作数之间。例如,以下代码使用中缀操作符 + 来调用函数 add:
val result = add(1, 2)
扩展函数
扩展函数允许我们为现有类添加新的函数,而不必修改类的源代码。扩展函数使用 extend 来定义,如下所示:
fun String.toUppercase() = this.toUpperCase()
现在,我们可以使用扩展函数 toUppercase 来将字符串转换为大写,如下所示:
val str = "Hello, world!"
val uppercasedStr = str.toUppercase()
lambda表达式
lambda表达式是一种匿名函数,它允许我们在代码中定义内联函数。lambda表达式使用关键字 fun 来定义,如下所示:
val sum = { a: Int, b: Int -> a + b }
现在,我们可以使用 lambda 表达式 sum 来计算两个数的和,如下所示:
val result = sum(1, 2)
实例探究
让我们通过一个实例来演示如何使用函数及高阶函数。假设我们有一个名为 Person 的类,该类具有 name 和 age 两个属性。我们想创建一个函数来查找给定列表中年龄最大的 Person 对象。
data class Person(val name: String, val age: Int)
fun findOldestPerson(people: List<Person>): Person? {
return people.maxByOrNull { it.age }
}
在这个示例中,我们定义了一个名为 findOldestPerson 的函数,该函数接收一个 Person 对象列表作为参数,并返回列表中最年长的人。我们使用 maxByOrNull 函数来查找最年长的人,maxByOrNull 函数接收一个 lambda 表达式作为参数,该 lambda 表达式指定如何比较两个 Person 对象的年龄。
总结
函数及高阶函数是 Kotlin 中的重要概念,它们使我们能够编写更简洁、更易读的代码。中缀表述法、扩展函数和 lambda 表达式是函数及高阶函数中的重要工具,它们可以帮助我们编写更优雅、更高效的 Kotlin 代码。