,,万物皆可柯里化的Ramda.js及传参详解

,,万物皆可柯里化的Ramda.js及传参详解

本文主要介绍Ramda.js的详细讲解,在这里一切都可以关联起来。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。

目录

先介绍函数,数据lastAPI

引言

前段时间我们写了几篇关于RxJS的文章。RxJS api操作符很难理解。RxJS是函数式编程中的lodash库,免去了“计时”带来的麻烦。其核心思想是:功能反应。

本文讲的不是RxJS,而是另一个函数式编程库,Ramda.js它也可以通过与loadsh的对比来理解,但是它的设计思路不同。它最大的特点就是所有的功能都可以在科里奥利里传递!为了实践函数式编程的思想。

往下看,后面就能明白了:Ramda所有API都可以关联的意义。

Function first,Data last

在洛达什,我们这样写,

var平方=n=gtn * n

_.地图([4,8],正方形)

参数第一,执行函数第二。

在Ramda中,强调的是函数在前,参数在后。

这样有什么好处?

只是为了更好的实现:柯里化。内化只需要逐个追加参数。

var R=require(' ramda ');

R.map(正方形,[4,8])

//相当于

var R=require(' ramda ');

R.map(正方形)([4,8])

再给我举个栗子:

var R=require(' ramda ');

常数奇数=x=gtx%2===1

const data=[3,5,6];

R.filter(奇数,数据);//[3, 5]

//相当于

R.filter(奇数)(数据);//[3, 5]

//你也可以延迟通话

const filter1=R.filter(奇数);

//filter1等待传入的参数。

//稍后将传入数据

const filter2=filter1(数据)

如果不借用Ramda.js,需要自己实现corelation,那就麻烦了:

const _ curry=f=gta=gtb=gt女(阿,乙)

常数奇数=x=gtx%2===1

const _filter=_curry( (fn,arr)=gt;阵列滤波器(fn));

_filter(奇数)([3,5,6]) //[3,5]

Ramda强调R.api(fn,data)的范式;

API

来看看有哪些神奇好用又常用的API~ Ramda有~

地图

让map的每个成员轮流执行一个功能;

const double=x=gtx * 2;

R.map(double,[1,2,3]);//=gt;[2, 4, 6]

R.map(double,{x: 1,y: 2,z:3 });//=gt;{x: 2,y: 4,z: 6}

过滤器

用于过滤;

const isEven=n=gtn % 2===0;

R.filter(isEven,[1,2,3,4]);//=gt;[2, 4]

R.filter(isEven,{a: 1,b: 2,c: 3,d:4 });//=gt;{b: 2,d: 4}

增加

总和;

R.add(2,3);//=gt;五

(7)(10);//=gt;17

多样地

正交;

乘法运算(2)(5) //10

构成

功能组合,从右到左;

R.compose(Math.abs,R.add(1),R.multiply(2))(-4)

//|-4*2 1|,等于7

功能组合,从左到右;

var负数=x=gt-1 * x;

var increaseOne=x=gt。x 1;

var f=R.pipe(Math.pow,negative,increaseOne)(3,4);

//-(3 ^ 4)1,等于-80

咖喱菜肴

将多个参数转换成单个参数。

const addFourNumbers=(a,b,c,d)=gt;a b c d;

const curriedAddFourNumbers=r . curry(addFourNumbers);

curriedAddFourNumbers(1,2)(3)(4)

Ramda还有其他丰富的API,也可以结合compose/pipe定制特定的功能函数。这些方法可以用来简化程序,使代码具有功能性。

以上例子都可以在jsrun.net/DTNKp/edit;在线测试

查看更多Ramda api文档:ramda.cn/

以上是Ramda.js解释科里奥利一切的详细内容。更多关于Coriolis Ramda.js的信息,请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关于js中的全等和不全等,等于和不等于问题的关系,,关于JS中的全等和不全等、等于和不等于问题
  • Vue项目启动,nodejs启动vue项目,如何启动一个Vue.js项目
  • vue双向绑定和单向绑定,vue.js 双向绑定,Vue双向绑定详解
  • vue事件修饰符和按键修饰符,vue事件绑定修饰符都有哪些,Vue.js 事件修饰符的使用教程
  • vue中-model的作用,Vue中的v-model指令的作用是-,vue.js 实现v-model与{{}}指令方法
  • vue2.0双向绑定原理,vue.js 双向绑定
  • vue2.0双向绑定原理,vue.js 双向绑定,深入理解vue.js双向绑定的实现原理
  • vue.js路由跳转,vue-router路由跳转,Vue路由跳转的4种方式小结
  • vue.js打包,vue前端如何打包,详解Vue项目的打包方式
  • vue.js前后端分离,vue前后端分离web项目,Vue之前端体系与前后端分离详解
  • vue.js 遍历数组,vue中遍历数组中的一个对象中的值
  • vue.js 遍历数组,vue中遍历数组中的一个对象中的值,Vue中遍历数组的新方法实例详解
  • UglifyJsPlugin,,Uglifyjs(JS代码优化工具)入门 安装使用
  • seajs教程,seajs还有人用吗,Sea.JS知识总结
  • require的用法js,require.js
  • 留言与评论(共有 条评论)
       
    验证码: