函数
最后更新于:2022-04-02 03:12:35
[TOC]
## compose
将多个函数合并成一个函数,**从右到左执行**。
```
R.compose(Math.abs, R.add(1), R.multiply(2))(-4) // 7
```
## pipe
将多个函数合并成一个函数,从左到右执行
```
var negative = x => -1 * x;
var increaseOne = x => x + 1;
var f = R.pipe(Math.pow, negative, increaseOne);
f(3, 4) // -80 => -(3^4) + 1
```
## curry
将多参数的函数,转换成单参数的形式
```
var addFourNumbers = (a, b, c, d) => a + b + c + d;
var curriedAddFourNumbers = R.curry(addFourNumbers);
var f = curriedAddFourNumbers(1, 2);
var g = f(3);
g(4) // 10
```
## memoize
返回一个函数,会缓存每一次的运行结果
```
var productOfArr = arr => {
var product = 1;
arr.forEach(i => product *= i);
return product;
};
var count = 0;
var factorial = R.memoize(n => {
count += 1;
return productOfArr(R.range(1, n + 1));
});
factorial(5) // 120
factorial(5) // 120
factorial(5) // 120
count // 1
```
## zipWith
```
var f = (x, y) => {
// ...
};
R.zipWith(f, [1, 2, 3])(['a', 'b', 'c'])
// [f(1, 'a'), f(2, 'b'), f(3, 'c')]
```
';