柯里化:函数式编程思想
在计算机科学中,柯里化把接收多个参数的函数转化成接收一个单一的参数(最初的函数第一个参数)的函数,并且返回接收余下参数且返回结果的新函数。
function curry(fn, len) {
var len = len || fn.length;
var func = function() {
var _arg = [].slice.call(arguments, 1);
reurn function() {
var newArgs = _arg.concat([].slice.call(arguments));
return fn.apply(this, newArgs);
}
}
return function() {
var argLen = arguments.length;
if(argLen < len) {
var formatedArr = [fn].concat([].slice.call(arguments));
return curry(func.apply(this, formatedArr), len - argLen);
} else {
return fn.apply(this, arguments);
}
}
}
网友评论