-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
维基百科中的定义:
柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
看看下面这个例子:
function add(a, b, c) {
return a + b + c
}
console.log(add(1, 2, 7)) // 10
// 柯里化后
const addCurry = curry(add, 1)
console.log(addCurry(2, 7)) // 10
柯里化的过程大概是这样:将函数的参数分开传递,第一次(初始化)传递一个,然后通过闭包把它存起来,返回一个新函数,第二次将剩余的参数传入新函数,并返回调用结果。
所以curry函数大概是这样:
function curry(fn, a) {
return function(b, c) {
return fn(a, b, c)
}
}
通用的柯里化函数:
function curry(fn, ...args) {
return (..._arg) => {
return fn(...args, ..._arg);
}
}