函数柯理化
函数柯理化
*** 如果一个函数有多个参数,那么把他变换成单一参数的函数连续调用的形式,这就是函数柯理化 ***
举例说明:
- 一个求和的函数
我们通常这么写
function add(x,y){
return x+y
}
let res = add(1,2)
柯理化之后
function curryingAdd(y){
return (x) => {
return x+y
}
}
let res = curryingAdd(1)(2)
看起来,上面的函数柯理化之后变得复杂许多,所以,柯理化最好能用在需要的地方
比如说下面两个例子:
- 1.计算折扣价格,函数柯理化方便复用代码块
假设x是价格,y是折扣
function mul(x,y){
return x*y
}
let res = mul(100,0.5) // => 20
柯理化:
function curryingMul(y){
return (x) => {
return x*y
}
}
let vipDiscount = curryingMul(0.5) // vip 5折
let supVipDiscount = curryingMul(0.1) // 超级vip 1折
let price1 = vipDiscount(100) // => 50
let price2 = vipDiscount(100) // => 10
- 2.计算立方体的体积,函数柯理化方便复用参数
function volume(l,w,h){
return l*w*h
}
let v = volume(1,2,10) // => 20
想要复用参数h,
柯理化:
function curryingVolume(h){
return (l) => {
return (w) => {
return l*w*h
}
}
}
let heightVolume = curryingVolume(10)
let v1 = heightVolume(1)(2) // => 20
let v2 = heightVolume(1)(3) // => 30
let v3 = heightVolume(1)(4) // => 40

浙公网安备 33010602011771号