【发布时间】:2016-08-16 21:24:19
【问题描述】:
从我读过的关于函数式编程的书中,我了解了 JavaScript 中的闭包以及它们如何工作。一个简单的例子是:
function StringCon(arg) {
return function (ar) {
return arg + ar;
}
}
StringCon("hello")(" world")//-> "hello world"
但是当我们想要添加更多参数时,我们需要返回越来越多的函数,这会很快造成混淆。
我想创建一个函数,它允许我传入一个字符串,并能够通过更多函数调用添加到这个函数中。当最终传递一个空调用时,它应该返回连接的字符串。 示例可能如下所示。
StringCon("I ")("am ")("new ")("to")(" JavaScript")();//-> I am new to JavaScript
另外,如果不完全可能,最接近的解决方案是什么? 提前致谢!
【问题讨论】:
-
你在说什么看起来像 currying here
-
我不知道,我应该将问题的名称更改为“Curring in JavaScript”吗?
-
@Alex 我想这取决于您是否有特定的柯里化问题。已经有examples 展示了如何实现它。
-
无论如何,你的问题本质上是“我可以写一个无限柯里化的函数吗?”?如果是这样,答案是“是”,但有一个问题 - 如果事先不知道参数的数量,或者不做 something 来结束链条,你就不能完全拥有你的例子。 something 可能会在末尾添加
(),如果您的 curry 功能没有看到输入,它会返回结果。其他人在返回的 curried 函数上添加了一个execute方法 on,这样你就可以使用f(1)(2)(3).exec()来获得结果。预先确定咖喱有点容易,所以你会喜欢curry(5)(StringCon) -
nicematt,我想我应该是那个感到抱歉的人,我没有很好地解释这个问题。看一下,我加了一些解释
标签: javascript