Kotlin:高阶函数

Kotlin学习笔记:高阶函数

  • 函数类型
  • 高阶函数的定义
  • 高阶函数的用途

函数类型

在Kotlin中,新增了函数类型的概念。使用类似Lambda表达式的形式来表示一个函数的类型:

(参数列表类型) -> 返回值类型

例如:

(arg1, arg2) -> Unit

通过上面的表达式我们定义了一个具有两个参数,返回值为Unit的函数类型。

->左边的部分用来声明该函数接受什么样的参数,多个参数之间用过’,'分隔,如果不接受任何参数,写一对空括号即可。 ->右边的部分用来声明该函数的返回值类型是什么,如果没有返回值,就用Unit,相当于Java中的void。

在我们使用时,由于没有定义函数体,所以我们需要将一个函数体的值赋给它,以实现相应的功能。

高阶函数的定义

如果一个函数接受另一个函数作为参数,或者返回返回值的类型为另一个函数,那么该函数就被称为高阶函数。

我们将第一部分定义的函数类型作为参数声明或返回值类型,那么这个函数就为高阶函数,例如:

fun example(func: (arg1, arg2) -> Unit) {
    func(value1, value2)
}

高阶函数的用途

高阶函数允许通过控制函数类型的值来控制函数的执行逻辑。

例如,我们定义一个函数:

fun example(n1: Int, n2: Int, func: (Int, Int) -> Int): Int {
    return func(n1, n2)
}

目前看来,这个函数没有什么实际功能,但我们可以通过向它传入不同的函数类型来实现不同的功能:

fun plus(n1: Int, n2: Int): Int = n1 + n2

fun minus(n1: Int, n2: Int): Int = n1 - n2

代码如下:

Kotlin:高阶函数_第1张图片

运行结果如下:

在这里插入图片描述

可见,程序的运算结果和我们的预期是一致的。但是每次在使用之前都要先定义一个与其函数类型相匹配的函数,太过复杂,我们可以使用Lambda表达式来简化代码:

Kotlin:高阶函数_第2张图片

你可能感兴趣的:(Kotlin学习笔记)