如何理解并寫好柯里化

柯里化:

理解: 是一種函數(shù)式編程的思想,將原本接收多個(gè)參數(shù)的函數(shù),轉(zhuǎn)變?yōu)榻邮芤粋€(gè)參數(shù), 使得js更好閱讀。

優(yōu)點(diǎn):
降低函數(shù)的使用范圍,提高適用性
參數(shù)復(fù)用

列如:
正常正則校驗(yàn)函數(shù)封裝

// 列1:
const checkRegExp(a, b) {
    return a.test(b)
}
checkRegExp(/^1[3-9]{1}\d{9}/, '13883889393')

-------------------------------------
// 列2:
function addThreeNum (a, b, c) {
    return a + b + c;
}
addTreeNum(6, 9 ,10);// 返回結(jié)果為25

使用柯里化函數(shù) 優(yōu)化后:

// 柯里化 降低使用范圍,提高適用性
function Exp(regExp: RegExp) {
    return (str: string) => {
        return regExp.test(str)
    }
}

// 手機(jī)號(hào)校驗(yàn) checkingPhoneRegExp(phone)
export const checkingPhoneRegExp = Exp(/^1[3-9]{1}\d{9}/)

// 郵箱校驗(yàn) checkingEmailRegExp(email)
export const checkingEmailRegExp = Exp(/^[a-z0-9_\.-]+@[a-z0-9_\.-]+[a-z0-9]{2,6}$/i)


// 使用:
checkingPhoneRegExp(123123) // false
checkingPhoneRegExp(1583963587) // true
// 郵箱驗(yàn)證也是一樣

優(yōu)化過(guò)后的手機(jī)號(hào)校驗(yàn)看起來(lái)是不是更好理解~

當(dāng)然,不止可以手機(jī)號(hào),郵箱,范圍還可以更廣,可以校驗(yàn)密碼、賬戶、數(shù)字,帶來(lái)更好的復(fù)用,更方便使用

我在這里簡(jiǎn)單把例子1 用柯里化思想處理過(guò)后
如果理解了可以試著把例子2 在優(yōu)化一下

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 什么是函數(shù)柯里化 在計(jì)算機(jī)科學(xué)中,柯里化(Currying)是把接受多個(gè)參數(shù)的函數(shù)變換成接受一個(gè)單一參數(shù)(最初...
    程序員既明閱讀 624評(píng)論 0 0
  • 柯里化定義理解 接受多個(gè)參數(shù)更改為接受單一參數(shù)(函數(shù)開(kāi)始的那個(gè)參數(shù)),處理剩余參數(shù)并返回結(jié)果的一種技術(shù)。 柯里化作...
    我的小機(jī)靈閱讀 258評(píng)論 0 0
  • 在計(jì)算機(jī)科學(xué)中,柯里化(Currying)是把接受多個(gè)參數(shù)的函數(shù)變換成接受一個(gè)單一參數(shù)(最初函數(shù)的第一個(gè)參數(shù))的函...
    toyfish閱讀 1,137評(píng)論 1 1
  • 1.閉包的概念 在對(duì)作用域,作用域鏈的概念進(jìn)行討論時(shí)我們知道,一般情況下定義在函數(shù)內(nèi)部的變量在函數(shù)外部是不可訪問(wèn)的...
    竹葉寨少主閱讀 1,829評(píng)論 0 10
  • 第一次看到柯里化這個(gè)詞的時(shí)候,還是在看一篇算法相關(guān)的博客提到把函數(shù)柯里化,那時(shí)一看這個(gè)詞就感覺(jué)很高端,實(shí)際上當(dāng)你了...
    flowsands閱讀 233,533評(píng)論 40 282

友情鏈接更多精彩內(nèi)容