返回

Kotlin 高阶函数简介 - 基础语法 (七)

Android

高阶函数

高阶函数是指可以接受函数作为参数,或者可以返回函数的函数。Kotlin 中的高阶函数有很多,例如 max 函数、min 函数、sort 函数等。

字面函数

字面函数或函数表达式就是一个 "匿名函数",也就是没有声明的函数,但立即作为 表达式传递下去。max 函数就是一个高阶函数,它接受函数作为第二个参数。第二个参数是一个表达 式所以本生就是一个函数,即字面函数。作为一个函数,相当于:

fun compare(a: Int, b: Int): Int {
    return a - b
}

val max = max(10, 20, compare)

函数表达式

函数表达式与字面函数类似,但它可以有名称。例如:

val compare: (Int, Int) -> Int = { a, b -> a - b }

val max = max(10, 20, compare)

Lambda 表达式

Lambda 表达式是函数表达式的简化形式,它省略了函数的名称和返回类型。例如:

val max = max(10, 20) { a, b -> a - b }

max 函数

max 函数是 Kotlin 中一个非常有用的高阶函数,它可以返回两个或多个值中的最大值。max 函数的语法如下:

fun max(a: Int, b: Int): Int
fun max(a: Int, b: Int, comparator: (Int, Int) -> Int): Int

第一个 max 函数接受两个 Int 型参数,并返回这两个参数中的最大值。第二个 max 函数接受三个参数,其中前两个参数是 Int 型,第三个参数是一个函数,该函数接受两个 Int 型参数,并返回这两个参数的比较结果。

柯里化

柯里化是指将一个函数分解成多个小函数的过程。柯里化可以使函数调用更加简便。例如,我们可以将 max 函数柯里化成如下形式:

fun maxBy(comparator: (Int, Int) -> Int): (Int, Int) -> Int {
    return { a, b -> comparator(a, b) }
}

maxBy 函数接受一个函数作为参数,并返回一个新的函数。新的函数接受两个 Int 型参数,并返回这两个参数的比较结果。我们可以使用 maxBy 函数来简化 max 函数的调用,例如:

val max = maxBy { a, b -> a - b }

val result = max(10, 20)

总结

本文介绍了 Kotlin 中的高阶函数,包括字面函数、函数表达式和 Lambda 表达式。还讲解了如何使用 max 函数,以及如何使用柯里化来简化函数调用。希望本文能帮助您更好地理解和使用 Kotlin 中的高阶函数。