第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

對ramda 中的api使用 很難理解?

對ramda 中的api使用 很難理解?

BIG陽 2019-05-25 18:01:18
最近在看函數(shù)式編程。用的是ramda庫。但各種api使用一臉懵逼。varfunc3=_.compose(p,trace("f3:"),f);varfunc4=_.filter(_.compose(p,trace("f4:"),f));console.log(func3(3))//36console.log(func4([3]))//[3]why?whathappened
查看完整描述

2 回答

?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

Ramda會自動柯里化,這么看可以理解不
_.filter(func3,[3])
func3(3)返回36,也就是true了,所以filter一遍3還在
                            
查看完整回答
反對 回復(fù) 2019-05-25
?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

func3的代碼還可以在抽象一下,console.log的函數(shù)也可以寫到compose函數(shù)中。
ramda的哲學(xué)有兩個(gè),1是自動柯理化,就是函數(shù)的參數(shù)可以分步傳入,也可以同時(shí)傳入。分部傳入的參數(shù)用到了閉包的概念。這個(gè)概念不理解透徹,柯理化就沒有辦法理解。恰好柯理化是函數(shù)式編程的核心之一。2是函數(shù)配置在前,參數(shù)最后傳入。像是一個(gè)攪拌器一樣,里面有很多的組件,裝配好之后,就可以往里添加原料了。這個(gè)就配置成了函數(shù)的生產(chǎn)線,一邊輸入?yún)?shù),就可以得到返回結(jié)果。
comopse是函數(shù)式組合,這里有高階函數(shù)的定義,Javascript的數(shù)據(jù)類型除了簡單數(shù)據(jù)類型其他的都是對象,對象的特點(diǎn)是可以傳引用賦值的,并且javascript的函數(shù)式是傳名調(diào)用的,func()的形式才會調(diào)用函數(shù),所以函數(shù)表達(dá)式的應(yīng)用可以傳遞給其他的函數(shù),在調(diào)用時(shí)需要使用()關(guān)鍵字。這里仍然有閉包的概念。傳遞進(jìn)compose的函數(shù)組組成了一個(gè)對象數(shù)組,雖有可以使用對象數(shù)組的遍歷方法來逐次調(diào)用函數(shù)。這里數(shù)組嗎?隨意可以用數(shù)組的方向正向調(diào)用,也可以反向調(diào)用。當(dāng)函數(shù)數(shù)組傳遞進(jìn)compose函數(shù)時(shí)就形成閉包了。閉包其實(shí)明白了以后,感覺也沒有什么。很多書介紹閉包的概念感覺不一樣,其實(shí)萬變不離其宗的,只不過閉包的應(yīng)用是在是太廣泛了,隨便用個(gè)例子,不太熟悉的人就蒙了。還有就是閉包的概念基礎(chǔ)有兩個(gè)一個(gè)是js引擎的單事件循環(huán),另一個(gè)是作用域。也不是太好理解。
閉包加高階函數(shù)使得javascript的函數(shù)具有了可配置性。可配置性時(shí)函數(shù)式編程和命令式編程的分水嶺??膳渲眯允沟煤瘮?shù)式編程中可以分辨出可變部分和不可變部分。這個(gè)地方是函數(shù)式編程需要思考的地方。
filter和map函數(shù),reduce函數(shù)的概念其實(shí)基本一樣。要在理解閉包的基礎(chǔ)上,這個(gè)三個(gè)函數(shù)實(shí)現(xiàn)的源碼。其實(shí)不是很復(fù)雜。
鏈?zhǔn)讲僮骺雌饋砗蚦ompose一樣,但是有很大不同.鏈?zhǔn)讲僮骱凸艿啦僮骱苋菀谆煜艿啦僮骱蚦ompose操作方方向不同,完成的操作是一樣的。這里傳遞的數(shù)據(jù)對于類型沒有要求。
鏈?zhǔn)讲僮魈岬搅艘粋€(gè)概念叫函子。其實(shí)這個(gè)概念如果你用過jQuery的鏈?zhǔn)讲僮鳎瑢?shí)現(xiàn)的就是函子操作。$(elements)把一個(gè)普通的元素包裝成了jquery對象,別小看這樣,一旦完成,元素不但可以使用jQuery對象的方法,還可以通過this把結(jié)果返回給jQuery對象,后續(xù)的鏈?zhǔn)讲僮骶涂梢猿掷m(xù)對這個(gè)對象進(jìn)行操作。這個(gè)很厲害,所以很多復(fù)雜的數(shù)據(jù)變換操作都可以用鏈?zhǔn)讲僮鱽硗瓿伞?pre>以我的觀點(diǎn),ramda其實(shí)沒有太大難度,難點(diǎn)仍然是閉包的概念,要吃透這個(gè)才行。當(dāng)我第一次腦海中形成了閉包的可配置性這個(gè)概念,似乎一下感覺找到了學(xué)習(xí)javascript的法寶。
                            
查看完整回答
反對 回復(fù) 2019-05-25
  • 2 回答
  • 0 關(guān)注
  • 480 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號