Rewrote pipe such that the first function may have any arity.
This commit is contained in:
@ -1,8 +1,18 @@
|
|||||||
### Pipe
|
### Pipe
|
||||||
|
|
||||||
Use `Array.reduce()` to pass value through functions.
|
Use `Array.reduce()` to perform left-to-right function composition. The first (leftmost) function can accept one or more arguments; the remaining functions must be unary.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const pipe = (...funcs) => arg => funcs.reduce((acc, func) => func(acc), arg);
|
const pipe = (...fns) => fns.reduce((f, g) => (...args) => g(f(...args)))
|
||||||
// pipe(btoa, x => x.toUpperCase())("Test") -> "VGVZDA=="
|
/*
|
||||||
|
const add5 = (x) => x + 5
|
||||||
|
const multiply = (x, y) => x * y
|
||||||
|
|
||||||
|
const multiplyAndAdd5 = pipe(
|
||||||
|
multiply,
|
||||||
|
add5
|
||||||
|
)
|
||||||
|
|
||||||
|
multiplyAndAdd5(5, 2) -> 15
|
||||||
|
*/
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user