中等_函数柯里化
问题
假定有一个功能函数如下
function doSomething(task1, task2, task3) {
task1()
task2()
task3()
}
Then we should implement a fn to make function Curry:
function curry() {
// 代码实现
}
const curried = curry(doSomething)
curried(task1, task2, task3)
curried(task1, task2)(task3)
curried(task1)(task2)(task3)
答案
function curry(fn) {
return function curried(...args) {
if ( args.length === fn.length) {
return fn.apply(null, args);
}
return (...moreArgs) => curried.apply(null, args.concat(moreArgs));
};
}