function - Kotlin 中的函数是实例吗?
问题描述
我正在阅读有关 lambda 的 Kotlin 文档,并遇到了这样一行字:
要调用 fold,我们需要将函数类型的实例作为参数传递给它
这给了我两个主要问题。
什么是函数的实例(或函数类型)
函数(函数类型)怎么会有实例
我在任何地方都没有成功找到答案,请帮忙。
解决方案
- 什么是函数的实例(或函数类型)
函数类型被描述为(Parameters) -> Result
,其实例将是实现与该类型描述匹配的签名的任何函数。
val function: (Int, Int) -> Int = { a, b -> a + b }
- 函数(函数类型)怎么会有实例
就像 java 中的匿名类一样,函数可以内联表示为对象。例如,在 java 中,您将拥有Consumer<T>
只有方法的 SAM-Type(单一抽象方法类型)accept(T): void
。在 kotlin 中,该类型是(T) -> Unit
,并且它的一个实例是使用 lambda 表达式作为var consumer: (T) -> Unit = { println(it) }
或函数引用创建的。然后通过调用运算符consumer(x)
或调用函数调用实例consumer.invoke(x)
。
推荐阅读
- c# - 使用 EF 6 和 MySQL 加载多个孙子集合时出错
- javascript - 函数不是函数?
- javascript - 为 JSON 声明一个变量
- java - JAX-RS POST NullPointerException
- wordpress - 目前,wordpress 提供一个 example.com,但我想从 example.com/blog 和 nginx 提供服务
- linux - 无法使用 sudo 命令,因为 pam_open_session 模块未知
- cassandra - 压缩需要多少可用磁盘空间?
- delphi - 如何将十六进制数据(存储在字符串变量中)转换为整数值
- python - 如何从元组python列表中删除所有字符串
- javascript - 我想将 img src 内部链接更改为外部链接