📜  kotlin 函数类型 - Kotlin (1)

📅  最后修改于: 2023-12-03 15:02:32.560000             🧑  作者: Mango

Kotlin函数类型

在Kotlin中,函数也是一种类型。这意味着我们可以将函数分配给变量,传递函数作为参数和返回函数。

声明函数类型

要声明函数类型,需要使用以下语法:

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

例如,以下是一个接受两个整数并返回它们之和的函数类型:

(val x: Int, val y: Int) -> Int
将函数分配给变量

我们可以使用函数定义将函数分配给变量,如下所示:

val sum: (Int, Int) -> Int = { x, y -> x + y }

上述代码创建了一个名为“sum”的变量,其中存储了一个函数,该函数接受两个整数并返回它们的和。我们可以使用以下代码调用该函数:

val result = sum(5, 3) // result = 8
将函数作为参数传递

在Kotlin中,我们可以将函数作为参数传递给其他函数。以下是一个简单的示例:

fun operate(x: Int, y: Int, op: (Int, Int) -> Int): Int {
    return op(x, y)
}

val result = operate(5, 3, { x, y -> x + y }) // result = 8

在上面的代码中,我们定义了一个名为“operate”的函数,它接受两个整数和一个函数类型参数“op”,该函数执行x和y的操作并将其返回。我们可以使用以下代码将我们的“sum”函数作为操作传递:

val result = operate(5, 3, sum) // result = 8
返回函数

与将函数作为参数传递相同,我们也可以从函数中返回另一个函数。以下是一个简单的示例:

fun double(n: Int): (Int) -> Int {
    return { x -> x * n }
}

val timesFour = double(4)
val result = timesFour(5) // result = 20

在上面的代码中,我们定义了一种名为“double”的函数类型,该函数接受一个整数并返回一个函数,该函数乘以该整数。然后我们将4传递给此函数以创建名为“timesFour”的新函数,该函数将其输入的值乘以4。我们可以使用以下代码调用这个函数:

val result = timesFour(5) // result = 20
函数类型的简写

在许多情况下,我们可以使用简写来声明函数类型。以下是一些常见的示例:

Lambda表达式

如果函数类型可以通过Lambda表达式推导出来,则可以省略参数和返回类型的声明,例如:

val sum = { x: Int, y: Int -> x + y }
函数指针

如果函数类型是已知的函数的类型,则可以省略所有类型声明:

fun sum(x: Int, y: Int): Int {
    return x + y
}

val sumFunc: (Int, Int) -> Int = ::sum
结论

在Kotlin中,函数类型为语言引入了极大的灵活性。我们可以将函数视为一等公民,并将其分配给变量,以及将其作为参数和返回值传递。这使得我们能够以简洁而灵活的方式编写代码,而无需妥协性能或可读性。