为什么要用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函数思维导图,帮你快速选择要用的函数...相关推荐

  1. python函数和代码复用思维导图_Python语言程序---代码复用与函数递归(二)

    Python语言程序---代码复用与函数递归(二) 函数递归 在函数定义中,调用函数自身的方式就是递归. 递归并不是程序设计的专有名词,在数学中也广泛存在.例如:n!.在n!中,我们定义当n=0时,n ...

  2. python中组合数据类型、函数和代码复用的难点_Python电子教案5-2 函数和代码复用...

    <Python电子教案5-2 函数和代码复用>由会员分享,可在线阅读,更多相关<Python电子教案5-2 函数和代码复用(56页珍藏版)>请在人人文库网上搜索. 1.七段数码 ...

  3. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  4. Python基础(三)_函数和代码复用

    三:函数和代码复用 (一)函数的基本使用 1.函数的定义 函数是一段具有特定功能的.可重用的语句组,用函数名来表示并通过函数名进行功能调用.函数也可以看作是一段具有名字的子程序,可以在需要的地方调用执 ...

  5. 测验5: 函数和代码复用 (第5周)

    测验5: 函数和代码复用 (第5周) 文章目录 测验5: 函数和代码复用 (第5周) 单选题 程序题 这是python123官网上联合MOOC的Python程序设计(第10期)答案 单选题 第三题补充 ...

  6. 第 5 章 函数和代码复用

    整理的文章内容主要来源为高教版<计算机等级考试二级 Python>教程视频讲义,并且更正了原讲义中的错误的地方. 专栏文章索引如下: 考试大纲 第 1 章 程序设计基本方法 第 2 章 P ...

  7. 第五章 函数和代码复用

    第五章 函数和代码复用 5.1 函数的基本使用 5.1.1 函数的定义 定义:函数是一段具有特定功能的.可重用的语句组,用函数名来表示并通过函数名进行功能调用. 使用函数的目的:降低编程难度和代码重用 ...

  8. 函数和代码复用之实例解析:软文的诗词风

    @TOC函数和代码复用之实例解析:软文的诗词风 人生苦短,我学Python 朋友圈已经是现代人生活中的一种社交形态,朋友圈里面的各种软文也体现了语言风格的变化.为了便于手机阅读,很多软文常常会使用一种 ...

  9. python 函数式编程 库_使用Python的toolz库开始函数式编程的方法

    在这个由两部分组成的系列文章的第二部分中,我们将继续探索如何将函数式编程方法中的好想法引入到 Python中,以实现两全其美. 在上一篇文章中,我们介绍了不可变数据结构 . 这些数据结构使得我们可以编 ...

  10. 计算机思维是程序对吗,编程如何培养计算思维 计算思维对孩子有何影响

    在现实生活中,编程已经渗透于我们生活的方方面面,很多时候我们在解决问题的过程中都会不知不觉用到编程思维.编程程思维也可以称为"计算思维",是一种将复杂的原理通过简单的按键操作来实现 ...

最新文章

  1. java 32个Java面试必考点
  2. JQuery 总结(7) index() data() each() 选项卡 表单验证
  3. C#的循环语句(一)
  4. 资产支持证券(Asset-Backed Security)
  5. Linq 合并数据并相加
  6. Hakase and Nano【博弈】
  7. Python XML操作处理
  8. JS复制文本到剪切板
  9. 计算机网络 以太网 和令牌环网
  10. vrrp和mstp实现网关冗余备份以及链路的负载均衡
  11. 用 Python 一键批量自动生成合同
  12. ACM赛后总结2018.09.23
  13. 用IDEA弹奏《起风了》伴奏音乐 Java语言 <源码分享> GitHub有趣的小项目
  14. 固态硬盘性能测试成绩
  15. Windows提权流程及手法
  16. 新手小白,做这几个短视频自媒体平台,有播放量就有收益
  17. promise和async用法及区别(详解)
  18. 分类模型评价指标说明
  19. 访问学者申请德国签证需提供护照吗?需注意些什么?
  20. 印象笔记,幕布, Effie 哪个适合公众号主?

热门文章

  1. ae 导出html5,AE脚本-导出json格式的Web动画工具 Bodymovin v5.7.0 + 使用教程
  2. GJB 软件质量保证报告(模板)
  3. ISO9001认证审核常见问题大汇总
  4. 用外挂只为“吃鸡”成功?为什么不试试正当手段!
  5. electron 软件 出现进程 XXX 可能无法关闭 解决方法
  6. BROTHER 废墨清零教学
  7. python分布式定时任务_分布式定时任务框架——python定时任务框架APScheduler扩展...
  8. 3.4实训任务 Hadoop环境搭建与安装
  9. 飞控信号SBUS信号解析为PWM信号输出
  10. endnotex8使用教程_EndNote X8使用教程