[英]How do I properly curry fn.apply with null?
背景:我想在一个采用多个参数的纯fn上映射参数数组的数组。 我认为使用null并使用Array.map()
会引起问题。
[[x1, y1], [x2, y2], [x3, y3], ... [xn, yn]].map(curry(fn.apply, null))
var curry = function(fn, value) {
return function (x, y) {
return fn(value, x, y);
};
}
var fn = (x,y) => [x, y];
var fn_c = curry(fn.apply, null)
fn_c([1,2]);
Uncaught TypeError: Function.prototype.apply was called on undefined, which is a undefined and not a function
at <anonymous>:3:20
at <anonymous>:8:5
在curried函数中仅会记住apply
,而没有fn
会影响应用。 因此,curried函数尝试运行apply(x,y)
而不是fn.apply(x,y)
,这当然会失败。
我该如何检索已应用的函数来传递?
弄清楚了。 我忘记了函数也是对象:
var curry = function(fn, value) {
return function (x, y) {
return fn(value, x, y);
};
}
var fn = (x,y) => [x, y];
var fn_c = curry(Function.prototype.apply.bind(fn), null)
fn_c([1,2]);
...很丑。 我只是.map(params => fn.apply(null, params))
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.