Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Ramda源代码有不止一个curry函数,Redux也有?_Javascript_Typescript_Redux_Ramda.js - Fatal编程技术网

Javascript 为什么Ramda源代码有不止一个curry函数,Redux也有?

Javascript 为什么Ramda源代码有不止一个curry函数,Redux也有?,javascript,typescript,redux,ramda.js,Javascript,Typescript,Redux,Ramda.js,中有\u curry1\u curry2\u curry3\u curryN功能 这种模式也出现在中 我想知道为什么他们使用这种模式,而不是在所有情况下只使用通用函数 这种模式能提高性能吗?这是一个很好的问题,通过谷歌搜索我发现了这个问题。引用 我们可以考虑直接暴露咖喱2和咖喱3。最大的 问题将出现在文档中。我们怎么解释呢 咖喱和咖喱之间的折衷,咖喱效率较低,但保留了 上下文并传递所有提供的参数,以及curry2/curry3, 它可以运行得更快,但会丢失调用上下文和 忽略提供的额外参数。但我看

中有
\u curry1
\u curry2
\u curry3
\u curryN
功能

这种模式也出现在中

我想知道为什么他们使用这种模式,而不是在所有情况下只使用通用函数


这种模式能提高性能吗?

这是一个很好的问题,通过谷歌搜索我发现了这个问题。引用

我们可以考虑直接暴露咖喱2和咖喱3。最大的 问题将出现在文档中。我们怎么解释呢 咖喱和咖喱之间的折衷,咖喱效率较低,但保留了 上下文并传递所有提供的参数,以及curry2/curry3, 它可以运行得更快,但会丢失调用上下文和 忽略提供的额外参数。但我看不出有什么真正的问题 实际上已经公开了这些功能


因此看来,
\u curry1
\u curry2
\u curry3
不能完全用
\u curryN
替换。除了Kousha的正确答案之外,我想补充一点,
\u curry2
-前缀函数是Ramda的内部结构,不会暴露在任何地方

Ramda(免责声明:我是它的创始人和主要作者之一)公开了
curryN
和一个有用的修饰语,
curry
。其他仅在内部使用。它们会带来一些额外的负担,尤其是帮助占位符。但最重要的是,它们并不是成熟的拉姆达·库里职能部门,只是尚未准备好暴露的内部助手。我们可以把它们修好,让它们成为现实,这就是引用评论的要点,但我们从来没有费心过。这可能会带来一些性能上的好处,这可能就是Redux这样做的原因,但我们还没有发现Curry在性能上有巨大的影响,至少在我们编写这些助手之后没有

在一个更为严格的库(如saccession)中,它们是唯一允许的API类型,因为输入不允许是可变的。不过,Ramda在支持可变函数方面做了相当多的工作。拉姆达选择了不走那条路