【发布时间】:2018-02-22 16:29:49
【问题描述】:
我试图弄清楚如何在 Kotlin 中将一个函数声明性地定义为其他两个函数的组合,但我正在苦苦挣扎。这是我的代码:
fun compose(a: (Int, Int) -> Int, b: (Int, Int) -> Int): Int {
return a.invoke() + b.invoke()
}
compose 函数的想法是,它将接受两个函数作为输入(这两个函数都接受两个 Int 并返回一个 Int)并返回两个传递函数的结果之和。问题是我必须调用传递的函数来计算它们的总和(显然是大声笑),但我不知道我希望在 compose 方法中调用的值(它们是传递给函数的值)。
我在这里完全错过了什么吗?我知道这在 Haskell 这样的语言中是可能的,在 Kotlin 中是否可能?
【问题讨论】:
-
组合
a和b通常意味着将a应用于b应用于某个参数的结果,但这并不是你真正想要的。 -
是的。名称
compose表示一些特定的操作:函数f(x)和g(x)的组合是g(f(x)),而不是函数和。
标签: kotlin higher-order-functions kotlin-higher-order-functions