返回

Kotlin 基础(三):函数及高阶函数初探

见解分享

函数及高阶函数

函数是编程语言的基石,在 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 代码。