本文主要介绍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的信息,请关注我们的其他相关文章!