var arr = [functionA(), functionB(), functionC()]
var data = { /** some data */ }

Comment puis-je ajouter dynamiquement les fonctions de la liste arr et les ajouter au tuyau ramda.

Code attendu:

const newFn = pipe(functionA, functionB, functionC)

newFn(data)
1
Subrata Banerjee 12 mars 2019 à 08:22

2 réponses

Meilleure réponse

Vous pouvez utiliser 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>
2
customcommander 12 mars 2019 à 11:17

Utilisez simplement l'opérateur de propagation es6 qui répartira les éléments du tableau en tant qu'arguments de la fonction pipe.

De plus, n'appelez pas vos fonctions dans le tableau à moins qu'elles ne renvoient une fonction que vous voulez :)

const arr = [functionA, functionB, functionC]
const data = { /** some data */ }

const newFn = pipe(...arr)

newFn(data)
0
protoEvangelion 7 sept. 2019 à 17:03