具有动态功能的 Ramda 管道
Ramda pipe with dynamic function
var arr = [functionA(), functionB(), functionC()]
var data = { /** some data */ }
如何从 arr 列表动态添加函数并将其添加到 ramda 管道。
预期代码:
const newFn = pipe(functionA, functionB, functionC)
newFn(data)
您可以使用 apply
:
const buildPipe = apply(pipe);
const add3 = buildPipe([inc, inc, inc]);
const add4 = buildPipe([inc, inc, inc, inc]);
console.log(add3(1));
console.log(add4(2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>
<script>const {apply, pipe, inc} = R;</script>
只需使用 es6 展开运算符 即可展开数组项作为管道函数的参数。
此外,不要调用数组中的函数,除非它们返回您想要的函数:)
const arr = [functionA, functionB, functionC]
const data = { /** some data */ }
const newFn = pipe(...arr)
newFn(data)
var arr = [functionA(), functionB(), functionC()]
var data = { /** some data */ }
如何从 arr 列表动态添加函数并将其添加到 ramda 管道。
预期代码:
const newFn = pipe(functionA, functionB, functionC)
newFn(data)
您可以使用 apply
:
const buildPipe = apply(pipe);
const add3 = buildPipe([inc, inc, inc]);
const add4 = buildPipe([inc, inc, inc, inc]);
console.log(add3(1));
console.log(add4(2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>
<script>const {apply, pipe, inc} = R;</script>
只需使用 es6 展开运算符 即可展开数组项作为管道函数的参数。
此外,不要调用数组中的函数,除非它们返回您想要的函数:)
const arr = [functionA, functionB, functionC]
const data = { /** some data */ }
const newFn = pipe(...arr)
newFn(data)