日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python函数和代码复用思维导图_函数式编程库:Ramda函数思维导图,帮你快速选择要用的函数...

發布時間:2023/12/31 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python函数和代码复用思维导图_函数式编程库:Ramda函数思维导图,帮你快速选择要用的函数... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么要用ramda庫

Pointfree 的概念,也就是函數級別的抽象,我們經常說復用邏輯,復用邏輯的關鍵的就是抽象,無論是面向對象還是架構設計。但是很少有人談到函數級別的復用,當我了解ramda庫的時候,我覺得這是一個很不錯的方案。舉個例子

假如我們有這么一段數據,需要篩選其中屬性isMan: true的值:

var list = [{ name: 'zhangsan', isMan: true }, { name: 'xiaoli', isMan: false }, ...]

復制代碼

我們看看不同的處理函數的寫法,帶來的復用性的差別

// Plain JS

var manList = list.filter(function(task) {

return task.isMan;

});

復制代碼

復制代碼使用LoDash,會簡單一點:

var manList = _.filter(list, {isMan: true});

復制代碼

復制代碼上面兩種情況,我們都會得到一個經過過濾的任務列表。

現在使用Ramda,我們可以這樣做:

var filterManList = R.filter(R.where({complete: false});

復制代碼

可以看出,其實ramda是在組裝函數,連數據都沒有,你要篩選數據的時候需要filterManList(list)

也就是說,處理數據的時候,我們不要把數據和函數耦合在一起,用一種可拆分的函數組裝的方式去處理,會讓復用性更強。例如下圖

fn = R.pipe(f1, f2, f3);

復制代碼

也就是函數和可以任意組合成新的函數fn,這個思想跟面向對象編程里,設計模式中的責任鏈模式非常相似,比如redux中間件組合也是這種思想。

其實用什么庫不是很重要,只要能幫助你快速完成業務需求,才是最重要的,ramda只是一種選擇,你認同這種編程思想。

學習ramda最大的難點

我也接觸時間并不長,學習它我覺得最大的問題是官網那么多函數,讓自己去篩選想要的很難第一時間找到,這就會極大的阻礙繼續使用這個庫的信心,所以我總結了一張思維導圖表,按業務需求常見的類似增刪改查這樣的邏輯分了一下類,幫助想用這個庫的同學快速找到對應的函數

總結這個真的非常費力,圖很大,需要保存到電腦上(結合官方文檔,可以查看用法示例https://ramda.cn/docs/)

總結

以上是生活随笔為你收集整理的python函数和代码复用思维导图_函数式编程库:Ramda函数思维导图,帮你快速选择要用的函数...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。