首页 > 解决方案 > Kotlin 中的函数是实例吗?

问题描述

我正在阅读有关 lambda 的 Kotlin 文档,并遇到了这样一行字:

要调用 fold,我们需要将函数类型的实例作为参数传递给它

这给了我两个主要问题。

  1. 什么是函数的实例(或函数类型)

  2. 函数(函数类型)怎么会有实例

我在任何地方都没有成功找到答案,请帮忙。

标签: functionkotlininstance

解决方案


  1. 什么是函数的实例(或函数类型)

函数类型被描述为(Parameters) -> Result,其实例将是实现与该类型描述匹配的签名的任何函数。

val function: (Int, Int) -> Int = { a, b -> a + b }
  1. 函数(函数类型)怎么会有实例

就像 java 中的匿名类一样,函数可以内联表示为对象。例如,在 java 中,您将拥有Consumer<T>只有方法的 SAM-Type(单一抽象方法类型)accept(T): void。在 kotlin 中,该类型是(T) -> Unit,并且它的一个实例是使用 lambda 表达式作为var consumer: (T) -> Unit = { println(it) }或函数引用创建的。然后通过调用运算符consumer(x)或调用函数调用实例consumer.invoke(x)


推荐阅读