函數語言程式設計 -- 柯里化
阿新 • • 發佈:2021-06-11
柯里化
-
當一個函式有多個引數的時候,先傳遞一部分引數呼叫它(這部分引數以後將不會再發生變化),然後返回一個新的函式接收剩餘的引數,這個函式返回結果
-
示例
// _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))