我是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'。我在做什么错了?
答案 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