摘要:說(shuō)明數(shù)據(jù)和操作解耦抽象化的功能函數(shù)組件更易復(fù)用和維護(hù)。說(shuō)明一言以蔽之就是為每個(gè)參數(shù)返回一個(gè)函數(shù)。總結(jié)通過(guò)已有的函數(shù)進(jìn)行組合最大程度的復(fù)用已有函數(shù)需要提前構(gòu)思好抽象單元函數(shù)。
引言
在fp編程中,compose是一個(gè)重要應(yīng)用場(chǎng)景,下面談?wù)撘恍﹤€(gè)人理解。
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));
說(shuō)明 數(shù)據(jù)和操作解耦,抽象化的功能函數(shù)組件更易復(fù)用和維護(hù)。
上面filter做到了只接受謂詞函數(shù)作為唯一約束,自由變量是如何被過(guò)濾,這涉及到curry,如下所示。
var _ = require("lodash"); const Rfilter=function (predicate) { return function (data) { return _.filter(data,predicate); } } console.log(Rfilter( d => d.name=="gcy")(data));
說(shuō)明 curry一言以蔽之就是為每個(gè)參數(shù)返回一個(gè)函數(shù)。好處是可以依賴透明,無(wú)觀察副作用,哈哈,其實(shí)所有fp純函數(shù)都有這個(gè)特性,其次簡(jiǎn)化函數(shù)使用難度(相對(duì)來(lái)說(shuō),為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.namex.age>=21); console.log(pipeline(todos,filterByAge,sortByname))
說(shuō)明 無(wú)論普通的compose,partial,還是curry可讀性都不好,上面既具有組合性,同時(shí)管道式的閱讀方式看起來(lái)順暢,而不是自內(nèi)向外,自右向左的函數(shù)式組合讀法。
總結(jié)通過(guò)已有的函數(shù)進(jìn)行組合,最大程度的復(fù)用已有函數(shù),需要提前構(gòu)思好抽象單元函數(shù)。最近挺忙的,維護(hù)一后端寫(xiě)的代碼A(){B()|C()},B(){C()},C(){D()}都是些全局函數(shù),然后依賴一些全局變量,有極大的觀察副作用,同時(shí)沒(méi)有模塊化,零件無(wú)組織的散落個(gè)各個(gè)文件中,典型的反例,感觸頗深(>﹏<)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/83337.html
小編寫(xiě)這篇文章的主要目的,主要是給大家去做一個(gè)解答,主要利用python去讀取和載入數(shù)據(jù),其中包括讀取和寫(xiě)入CSV文件,具體的一些詳細(xì)內(nèi)容介紹,下面就給大家詳細(xì)解答下。 前言 CSV(Comma-Separated Values)即逗號(hào)分隔值,一種以逗號(hào)分隔按行存儲(chǔ)的文本文件,所有的值都表現(xiàn)為字符串類型(注意:數(shù)字為字符串類型)。如果CSV中有中文,應(yīng)以u(píng)tf-8編碼讀寫(xiě). 1.導(dǎo)入CS...
對(duì)于很多從事Python的人來(lái)說(shuō),有很多的人想要去進(jìn)階的,比如學(xué)習(xí)跟多的一些知識(shí),比如,我們?cè)诠ぷ髦袝?huì)遇到,使用Python計(jì)算AUC的三種方式,下面給大家做出一個(gè)解答。 介紹 AUC(Area Under Curve),其實(shí)就是ROC曲線圍成的和下坐標(biāo)軸圍成的一個(gè)面積,這個(gè)面積的數(shù)值一般是不會(huì)大于1的。 當(dāng)然,ROC曲線基本上都在y=x,這條直線上面的一個(gè)正上方,因此AUC的正確值應(yīng)該...
小編寫(xiě)這篇文章的一個(gè)主要目的,主要是給大家就相關(guān)的具體內(nèi)容做出一些詳細(xì)解答,比如了解使用python的相關(guān)知識(shí),主要是涉及到python Opencv的一些相關(guān)知識(shí),比如使用python Opencv實(shí)現(xiàn)停車位識(shí)別,就具體的內(nèi)容,下面給大家詳細(xì)解答下。 1.怎么去實(shí)現(xiàn) (1)第一是需要用到一個(gè)處理畫(huà)框的程序,將圖片中的有車和無(wú)車的停車位給畫(huà)出來(lái),并且保存坐標(biāo)(如果畫(huà)錯(cuò)了,將鼠標(biāo)移至要?jiǎng)h除的...
算法目前是比較火的一個(gè)領(lǐng)域了,其中,python作為算法的一種延伸,其應(yīng)用范圍還是比較的廣泛的。那么,它其中有一個(gè)就是海象運(yùn)算符,它的運(yùn)算教程是什么呢?下面給大家一一的列舉,大家要仔細(xì)的閱讀哦。 前言 大家好,我是閑歡,你們的老相識(shí)呀! 海象可謂是最大的哺乳動(dòng)物了,有人稱它是北半球的土著居民。它圓頭,短而闊的嘴巴,粗大的鼻子,上犬齒形成長(zhǎng)達(dá)40厘米-90厘米的獠牙,每只4公斤以上。雄海象...
摘要:是可以被的容器類型。出自范疇論數(shù)學(xué)的一個(gè)分支滿足一些定律。滿足的定律是一種特殊的可以鋪平的結(jié)果。說(shuō)明如果用普通第一層異常時(shí)會(huì)連續(xù)執(zhí)行通過(guò)的方式可以在異常發(fā)生時(shí)無(wú)論怎么最后還是它自己從而可以在異常發(fā)生時(shí)避免不必要的錯(cuò)誤執(zhí)行。 functor functor是可以被map over的容器類型。 關(guān)于這句話比較難理解的是,什么是map over? (a -> b) -> f a -> f b...
閱讀 2636·2021-11-18 10:07
閱讀 1089·2021-08-03 14:04
閱讀 731·2019-08-30 13:08
閱讀 2586·2019-08-29 15:33
閱讀 1099·2019-08-29 14:07
閱讀 2997·2019-08-29 14:04
閱讀 1447·2019-08-29 11:19
閱讀 1152·2019-08-29 10:59