1. 程式人生 > 其它 >函數語言程式設計 -- 柯里化

函數語言程式設計 -- 柯里化

柯里化

  • 當一個函式有多個引數的時候,先傳遞一部分引數呼叫它(這部分引數以後將不會再發生變化),然後返回一個新的函式接收剩餘的引數,這個函式返回結果

  • 示例

// _lodash 中的curry函式
const _ = require('lodash')
function getSum(a,b,c){
  return a+b+c
}
const curried = _.curry(getSum)
console.log(curried(1,2,3))
console.log(curried(1)(2,3))
console.log(curried(1,2)(3))
//上面三種寫都將得到一樣的結果,即6

什麼時候使用柯里化函式

  • 比如在程式中,需要寫很多遍同一函式、不同引數、同時我們又想保持函式的純度的情況,可以採用柯里化簡化引數,比如:
function checkAge(min,age){
  return age>=min
}
checkAge(18,20)
checkAge(18,21)
checkAge(18,25)
checkAge(18,31)
// 上面這樣,檢測age是否>=min,對於需要寫很多遍時,可以柯里化,像下面這樣:

function checkAge(min){
  return function(age){
    return age >=min
  }
}

//比較age是否>=18可以這樣寫:
let checkAge18=checkAge(18)
//比較age是否>=20可以這樣寫:
let checkAge20=checkAge(20)

//後續比較都只需要輸入一個引數age就可以了
console.log(checkAge18(21))
console.log(checkAge20(21))