使用lodash调用翻转函数-有限制吗?

时间:2019-05-05 13:41:56

标签: javascript functional-programming lodash

我是lodash的新手,只是玩弄它变得熟悉。 我正在尝试使用翻转功能,并且遇到TypeError。

使用相同的“未翻转”功能可以正常工作。

const curriedMap = _.curry(_.map);
const squares1 = curriedMap([ 1, 2, 3, 4 ]);

console.log(squares1(x => x * x)); // [ 1, 4, 9, 16 ]


const flippedMap = _.flip(_.map);

console.log(flippedMap(x => x * x, [1, 2, 3, 4])); // [ 1, 4, 9, 16 ]

const curriedFlippedMap = _.curry(flippedMap);

const makeSquares = curriedFlippedMap(x => x * x);

console.log(makeSquares([1, 2, 3, 4])); // TypeError: makeSquares is not a function

我期望最后一行产生[ 1, 4, 9, 16 ],但我得到的是'TypeError'。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

pacf具有length属性(参数数量),_.map可以使用该属性自动进行咖喱处理,但是_.curry不能轻易产生与其长度相同的新函数输入(它会颠倒整个参数列表,而不仅仅是_.flip(_.map))。

f => (a, b) => f(b, a)

> _.map.length 2 > _.flip(_.map).length 0 使您specify the number of parameters可以解决此问题:

_.curry