【发布时间】:2018-12-02 19:37:13
【问题描述】:
我正在尝试在 kotlin 中对一个函数进行 curry,以便我可以这样调用它
myAdditionFunction(1)(2)(3)
此调用将返回 6,因为 1+ 2 + 3 = 6
我只需要它对所有数字执行加法。其实我真的很想让它做一个建设者 未来的模式,但仍在尝试了解 curry 函数是如何工作的。这是我目前所拥有的:
fun myAdditionFunction(x: Int) { { y: Int -> x + y }
这适用于两个参数。 所以 myAdditionFunction(1)(2) 将打印 3。
我希望它适用于 3 个或多个:这是我为 3 个参数尝试过的:
fun myAdditionFunction(x: Int) {
var sum = 0
return { y: Int ->
sum = x + y
sum }
}
我如何将总和向前推进以及如何使其采用第三个内部函数?它不会编译。
但它不会编译
【问题讨论】:
-
也许您想自己构建它,很好,但如果没有,现有的库可以进行柯里化,其中也可以向您展示它是如何完成的。 arrow-kt.io 是其中之一。 funKTionale 是另一个:github.com/MarioAriasC/funKTionale/wiki/Currying.
-
这在博客上也有很多很好的例子。
-
只是想自己做,这样我就可以成为客户构建者。好图书馆,我会检查的
-
太棒了,我会查看这两个库,然后用谷歌搜索这个主题,因为有很多这样的例子可供参考。