函数柯理化

函数柯理化

*** 如果一个函数有多个参数,那么把他变换成单一参数的函数连续调用的形式,这就是函数柯理化 ***
举例说明:

  • 一个求和的函数
    我们通常这么写
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
posted @ 2020-03-25 18:34  zoo-x  阅读(228)  评论(0)    收藏  举报