成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

認(rèn)識(shí) 科里化(curry)——JS函數(shù)式編程

gclove / 3546人閱讀

摘要:科里化概念只傳遞給函數(shù)一部分參數(shù)來調(diào)用它,讓它返回一個(gè)函數(shù)去處理剩下的參數(shù)。只定義了一個(gè)函數(shù),他接受一個(gè)參數(shù)并返回一個(gè)新的函數(shù),調(diào)用之后,返回的函數(shù)就通過必報(bào)的方式記住了的第一個(gè)參數(shù)。

科里化

概念: 只傳遞給函數(shù)一部分參數(shù)來調(diào)用它,讓它返回一個(gè)函數(shù)去處理剩下的參數(shù)。

var add = function(x) {

    return function(y) {
        return x + y;
    };
};

var increment = add(1);
var addTen = add(10);

increment(2);

addTen(2);        

只定義了一個(gè) add 函數(shù),他接受一個(gè)參數(shù)并返回一個(gè)新的函數(shù),調(diào)用 add 之后,返回的函數(shù)就通過必報(bào)的方式記住了 add 的第一個(gè)參數(shù)。一次性地調(diào)用它是在是有點(diǎn)繁瑣,好在我們可以使用一個(gè)特殊的curry幫助函數(shù)使這類函數(shù)的定義和調(diào)用更加容易。

var curry = require("lodash").curry;

var match = curry(function(what,str){
    return str.match(what);
});

var replace = curry(function(what, replacement, str){
    return str.replace(what, replacement);
});

var filter = curry(function(f, ary) {
    return ary.filter(f);
});

var map = curry(function(f, ary) {
    return ary.map(f);
});

我在上面的代碼中遵循的是一種簡單,同時(shí)也非常重要的模式。即策略性地把要操作的數(shù)據(jù)(string, Array)放到最后一個(gè)參數(shù)里。到使用它們的時(shí)候就明白這么做的原因是什么了。

match(/s+/g, "hello world");
// [ " " ]

match(/s+/g)("hello world");
// [ " " ]

var hasSpaces = match (/s + /g);
// function(x) { return x.match(/s+/g) }

hasSpaces("hello World");
// [ " "]


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80325.html

相關(guān)文章

  • Js-函數(shù)編程

    摘要:組合組合的功能非常強(qiáng)大,也是函數(shù)式編程的一個(gè)核心概念,所謂的對過程進(jìn)行封裝很大程度上就是依賴于組合。在理解之前,先認(rèn)識(shí)一個(gè)東西概念容器容器為函數(shù)式編程里普通的變量對象函數(shù)提供了一層極其強(qiáng)大的外衣,賦予了它們一些很驚艷的特性。 前言 JavaScript是一門多范式語言,即可使用OOP(面向?qū)ο螅?,也可以使用FP(函數(shù)式),由于筆者最近在學(xué)習(xí)React相關(guān)的技術(shù)棧,想進(jìn)一步深入了解其思想...

    whinc 評論0 收藏0
  • 函數(shù)編程與面向?qū)ο?em>編程[1]: Lambda表達(dá) 函數(shù)柯里 高階函數(shù)

    摘要:函數(shù)式編程與面向?qū)ο缶幊瘫磉_(dá)式函數(shù)柯里化高階函數(shù)之劍什么是表達(dá)式例子定義表達(dá)式是一個(gè)匿名函數(shù),表達(dá)式基于數(shù)學(xué)中的演算得名,直接對應(yīng)于其中的抽象,是一個(gè)匿名函數(shù),即沒有函數(shù)名的函數(shù)。 函數(shù)式編程與面向?qū)ο缶幊蘙1]: Lambda表達(dá)式 函數(shù)柯里化 高階函數(shù).md 之劍 2016.5.2 11:19:09 什么是lambda表達(dá)式 例子 For example, in Lisp the...

    張金寶 評論0 收藏0
  • 函數(shù) js 接口實(shí)現(xiàn)原理,以及 lodash/fp 模塊

    摘要:函數(shù)式接口之前在上看到一個(gè)技術(shù)視頻,講的接口為什么不好用,以及什么樣的接口更好用。演講者是的作者,他提出了一種全面函數(shù)式的接口設(shè)計(jì)模式。言歸正傳,今天聊聊這樣的接口如何實(shí)現(xiàn),以及中的模塊。 函數(shù)式 js 接口 之前在 youtube 上看到一個(gè)技術(shù)視頻,講underscore.js的接口為什么不好用,以及什么樣的接口更好用。演講者是 lodash.js 的作者,他提出了一種全面函數(shù)式的...

    asce1885 評論0 收藏0
  • 【響應(yīng)編程的思維藝術(shù)】 (3)flatMap背后的代數(shù)理論Monad

    摘要:本文是響應(yīng)式編程第二章序列的深入研究這篇文章的學(xué)習(xí)筆記。函數(shù)科里化的基本應(yīng)用,也是函數(shù)式編程中運(yùn)算管道構(gòu)建的基本方法。四資料參考函數(shù)式編程指南 本文是Rxjs 響應(yīng)式編程-第二章:序列的深入研究這篇文章的學(xué)習(xí)筆記。示例代碼托管在:http://www.github.com/dashnowords/blogs 更多博文:《大史住在大前端》目錄 showImg(https://segme...

    MorePainMoreGain 評論0 收藏0
  • 從一道面試題認(rèn)識(shí)函數(shù)柯里

    摘要:函數(shù)柯里化在函數(shù)式編程中,函數(shù)是一等公民。函數(shù)柯里化的主要作用和特點(diǎn)就是參數(shù)復(fù)用提前返回和延遲執(zhí)行??赡茉趯?shí)際應(yīng)用場景中,很少使用函數(shù)柯里化的解決方案,但是了解認(rèn)識(shí)函數(shù)柯里化對自身的提升還是有幫助的。 最近在整理面試資源的時(shí)候,發(fā)現(xiàn)一道有意思的題目,所以就記錄下來。 題目 如何實(shí)現(xiàn) multi(2)(3)(4)=24? 首先來分析下這道題,實(shí)現(xiàn)一個(gè) multi 函數(shù)并依次傳入?yún)?shù)執(zhí)行,...

    13651657101 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<