作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
Lodash 中 curry
和 curryRight
有什么区别?
只是提供的参数的应用顺序从 f(a,b,c)
切换到适用于 f(a) -> f(b) -> f(c )
到 f(a,b,c)
然后应用于 f(c) -> f(b) -> f(a)
?
我已经查看了 Lodash 文档,但这对我没有帮助。
最佳答案
来自documentation :
var abc = function(a, b, c) {
return [a, b, c];
};
var curried = _.curryRight(abc);
curried(3)(2)(1);
// => [1, 2, 3]
curried(2, 3)(1);
// => [1, 2, 3]
curried(1, 2, 3);
// => [1, 2, 3]
第一个例子很简单。参数的顺序是相反的(与 _.curry 相比)。
第二个和第三个可能令人困惑。
在第三个例子中,我们看到参数的顺序没有颠倒。那是因为只有 currying 被反向应用。换句话说,括号以相反的顺序应用,但括号内的内容维持原始顺序。
将此与 _.curry(_.flip(f))
的结果进行比较:
var abc = function(a, b, c) {
return [a, b, c];
};
var curried = _.curry(_.flip(abc), 3);
curried(3)(2)(1);
// => [1, 2, 3]
curried(3, 2)(1);
// => [1, 2, 3]
curried(3, 2, 1);
// => [1, 2, 3]
如您所见,结果不同。现在所有示例中参数的顺序都完全颠倒了。
请注意,出于某种原因,我需要在 _.curry(_.flip(abc), 3);
中将元数指定为 3。我不知道为什么,但没有它会导致异常。
关于javascript - Lodash 中 curry 和 curryRight 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48111974/
Lodash 中 curry 和 curryRight 有什么区别? 只是提供的参数的应用顺序从 f(a,b,c) 切换到适用于 f(a) -> f(b) -> f(c ) 到 f(a,b,c) 然后
我是一名优秀的程序员,十分优秀!