Javascript 如果您的代码库具有curry函数,为什么要编写闭包?
在进行函数编程时,如果有可用的Javascript 如果您的代码库具有curry函数,为什么要编写闭包?,javascript,functional-programming,closures,currying,Javascript,Functional Programming,Closures,Currying,在进行函数编程时,如果有可用的curry函数,那么编写闭包的原因是什么 结束 add = additive => value => value + additive 咖喱 add = curry((additive, value) => value + additive) 这是咖喱功能: curry = func => (...args) => ( args.length >= func.length ? func(...args)
curry
函数,那么编写闭包的原因是什么
结束
add = additive => value => value + additive
咖喱
add = curry((additive, value) => value + additive)
这是咖喱功能:
curry = func => (...args) => (
args.length >= func.length
? func(...args)
: (...moreArgs) => curry(func)(...args.concat(moreArgs))
)
在这个递归版本中,
add(1,2)
和add(1)(2)
都是可能的。curry
是一种动态创建闭包的好方法,但在大多数情况下,编写闭包和uncurry
在必要时要简单得多:
- 您可能没有可用的
,编写咖喱更麻烦咖喱
- 总是用
来包装函数很麻烦。它创造了很多间接和神奇的东西,而这些东西对其他程序员来说可能并不明显,包括你自己curry
- 如果需要进行微优化,currying将在代码周围添加更多的函数包装和逻辑,最终在成千上万次调用之后使其速度明显减慢
f=(x,y)=>z=>…
f
是一个部分通用的函数,可组合。有时候,写作能力就是你所需要的。我更新了我的帖子。您可以像使用这种特殊的咖喱一样充满活力。咖喱会使函数变慢。