【发布时间】:2022-03-12 15:39:56
【问题描述】:
我不明白这个递归咖喱函数是否正确。
function curry(fn) {
return function curryInner(...args) {
if (args.length >= fn.length) return fn(...args);
return function (...next) {
return curryInner(...args, ...next);
};
};
}
const example = {
multiplier: 5,
calculate: function (a, b) {
return (a + b) * this.multiplier;
},
};
example.curriedVersion = curry(example.calculate);
console.log(example.calculate(1, 2));
console.log(example.curriedVersion(1)(2));
我有带绑定的 curry 函数实现,但我不确定它为什么起作用而递归不起作用。你能帮我理解一下吗,我认为我对这个函数的上下文理解不正确
function curry(func) {
return function curried(...args) {
if (args.length >= func.length) {
return func.apply(this, args)
} else {
return curried.bind(this, ...args)
}
}
}
【问题讨论】:
-
你对哪一部分感到困惑?
-
"我不明白这个递归柯里函数是否正确。" 如果用这个函数柯里化的结果是错误的,那么柯里函数是错误的。为什么你不相信这一点?
-
我不明白为什么它不正确
标签: javascript closures bind currying