成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

fp->compose

yuxue / 462人閱讀

摘要:說明數(shù)據(jù)和操作解耦抽象化的功能函數(shù)組件更易復用和維護。說明一言以蔽之就是為每個參數(shù)返回一個函數(shù)。總結(jié)通過已有的函數(shù)進行組合最大程度的復用已有函數(shù)需要提前構(gòu)思好抽象單元函數(shù)。

引言

在fp編程中,compose是一個重要應用場景,下面談論一些個人理解。

const R=require("ramda");
const data=[{
    name:"gcy",
    sex:"male"
},{
    name:"ycg",
    sex:"female"
}]
const getName=R.compose(
    R.map(d => d.name),
    R.filter(d => d.sex=="male")
);

console.log(getName(data));

說明 數(shù)據(jù)和操作解耦,抽象化的功能函數(shù)組件更易復用和維護。

上面filter做到了只接受謂詞函數(shù)作為唯一約束,自由變量是如何被過濾,這涉及到curry,如下所示。

var _ = require("lodash");

const Rfilter=function (predicate) {
    return function (data) {
        return _.filter(data,predicate);
    }
}
console.log(Rfilter( d => d.name=="gcy")(data));

說明 curry一言以蔽之就是為每個參數(shù)返回一個函數(shù)。好處是可以依賴透明,無觀察副作用,哈哈,其實所有fp純函數(shù)都有這個特性,其次簡化函數(shù)使用難度(相對來說,為curry而curry就得不償失了)和方便compose。

const {comp,pipeline,partial,inc,filter,sort}=require("mori");
const todos=[{
    name:"g1",
    age:"20"
},{
    name:"g2",
    age:"21"
},{
    name:"g1",
    age:"22"
}];
const sortByname=partial(sort,(x,y) => x.name x.age>=21);
console.log(pipeline(todos,filterByAge,sortByname))

說明 無論普通的compose,partial,還是curry可讀性都不好,上面既具有組合性,同時管道式的閱讀方式看起來順暢,而不是自內(nèi)向外,自右向左的函數(shù)式組合讀法。

總結(jié)

通過已有的函數(shù)進行組合,最大程度的復用已有函數(shù),需要提前構(gòu)思好抽象單元函數(shù)。最近挺忙的,維護一后端寫的代碼A(){B()|C()},B(){C()},C(){D()}都是些全局函數(shù),然后依賴一些全局變量,有極大的觀察副作用,同時沒有模塊化,零件無組織的散落個各個文件中,典型的反例,感觸頗深(>﹏<)。

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/83337.html

相關(guān)文章

  • 在python中讀取和寫入CSV文件詳情

      小編寫這篇文章的主要目的,主要是給大家去做一個解答,主要利用python去讀取和載入數(shù)據(jù),其中包括讀取和寫入CSV文件,具體的一些詳細內(nèi)容介紹,下面就給大家詳細解答下?! ∏把浴 SV(Comma-Separated Values)即逗號分隔值,一種以逗號分隔按行存儲的文本文件,所有的值都表現(xiàn)為字符串類型(注意:數(shù)字為字符串類型)。如果CSV中有中文,應以utf-8編碼讀寫.  1.導入CS...

    89542767 評論0 收藏0
  • Python計算AUC的三種方式

      對于很多從事Python的人來說,有很多的人想要去進階的,比如學習跟多的一些知識,比如,我們在工作中會遇到,使用Python計算AUC的三種方式,下面給大家做出一個解答?! 〗榻B  AUC(Area Under Curve),其實就是ROC曲線圍成的和下坐標軸圍成的一個面積,這個面積的數(shù)值一般是不會大于1的。  當然,ROC曲線基本上都在y=x,這條直線上面的一個正上方,因此AUC的正確值應該...

    89542767 評論0 收藏0
  • python Opencv實現(xiàn)停車位識別思路詳解

      小編寫這篇文章的一個主要目的,主要是給大家就相關(guān)的具體內(nèi)容做出一些詳細解答,比如了解使用python的相關(guān)知識,主要是涉及到python Opencv的一些相關(guān)知識,比如使用python Opencv實現(xiàn)停車位識別,就具體的內(nèi)容,下面給大家詳細解答下?! ?.怎么去實現(xiàn) ?。?)第一是需要用到一個處理畫框的程序,將圖片中的有車和無車的停車位給畫出來,并且保存坐標(如果畫錯了,將鼠標移至要刪除的...

    89542767 評論0 收藏0
  • Python海象運算符的用法教程

      算法目前是比較火的一個領(lǐng)域了,其中,python作為算法的一種延伸,其應用范圍還是比較的廣泛的。那么,它其中有一個就是海象運算符,它的運算教程是什么呢?下面給大家一一的列舉,大家要仔細的閱讀哦?! ∏把浴 〈蠹液茫沂情e歡,你們的老相識呀!  海象可謂是最大的哺乳動物了,有人稱它是北半球的土著居民。它圓頭,短而闊的嘴巴,粗大的鼻子,上犬齒形成長達40厘米-90厘米的獠牙,每只4公斤以上。雄海象...

    89542767 評論0 收藏0
  • fp->monadic

    摘要:是可以被的容器類型。出自范疇論數(shù)學的一個分支滿足一些定律。滿足的定律是一種特殊的可以鋪平的結(jié)果。說明如果用普通第一層異常時會連續(xù)執(zhí)行通過的方式可以在異常發(fā)生時無論怎么最后還是它自己從而可以在異常發(fā)生時避免不必要的錯誤執(zhí)行。 functor functor是可以被map over的容器類型。 關(guān)于這句話比較難理解的是,什么是map over? (a -> b) -> f a -> f b...

    DC_er 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<