函数柯理化又叫做函数的部分求值
柯里化是指这样一个函数,他接收函数 A
作为参数,运行后能够返回一个新的函数。并且这个新的函数能够处理函数A的剩余参数。
我们通过下面的例子配合来解释,先有一个函数 A
function A(a, b, c) {
return a + b + c;
}
假如我们已经有一个封装好的柯理化函数 currying
他接收 A
作为参数,能够将 A
转化成柯理化函数,返回的结果就是这个被转化后的函数
var _A = currying(A);
那么 _A
作为柯理化函数,他能够处理A剩下的剩余参数,因此要求下面的运行结果都是等价的:
_A(1, 2, 3);
_A(1, 2)(3);
_A(1)(2, 3);
_A(1)(2)(3);
A(1, 2, 3);
函数 A
被 currying
转化后得到柯理化函数 _A
,_A
能处理A
的所有剩余参数,因此柯理化也被成为部分求值
在简单的场景下,我们凭眼里来封装得到柯理化函数可能是下面这样的
function myA(a) {
return function(b) {
return function(c) {
return a + b + c;
}
}
}
那么下面的运算方式是等价的
A(1, 2, 3);
myA(1)(2)(3);
但是按照要求,要求 myA(1, 2)(3)
也要与其他的等价,单并不是,所以,靠眼里封装的柯理化函数自由度偏低,而且有些要求达不到
因此我们需要知道如何去封装一个柯理化的通用式