Le currying de fonctions en JavaScript

JavaScriptJavaScriptBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons explorer le concept de currying et d'uncurrying de fonctions en JavaScript. Le currying de fonctions est une technique qui nous permet de transformer une fonction qui prend plusieurs arguments en une séquence de fonctions qui prennent chacun un seul argument. D'un autre côté, l'uncurrying de fonctions est le processus de transformation d'une séquence de fonctions qui prennent chacun un seul argument en une fonction qui prend plusieurs arguments. Dans ce laboratoire, nous allons apprendre à implémenter ces deux techniques en JavaScript.

Uncurry une fonction

Pour uncurry une fonction jusqu'à une profondeur spécifiée, utilisez la fonction uncurry.

const uncurry =
  (fn, n = 1) =>
  (...args) => {
    const next = (acc) => (args) => args.reduce((x, y) => x(y), acc);
    if (n > args.length) throw new RangeError("Arguments trop peu nombreux!");
    return next(fn)(args.slice(0, n));
  };

Pour utiliser la fonction uncurry, passez la fonction que vous voulez uncurry et la profondeur jusqu'à laquelle vous voulez l'uncurry comme arguments. La fonction retournera une fonction variadique que vous pouvez appeler avec les arguments que vous voulez passer.

Si vous ne spécifiez pas la profondeur, la fonction uncurry jusqu'à la profondeur 1.

const add = (x) => (y) => (z) => x + y + z;
const uncurriedAdd = uncurry(add, 3);
uncurriedAdd(1, 2, 3); // 6

Si le nombre d'arguments que vous passez est inférieur à la profondeur spécifiée, la fonction lancera une RangeError.

Résumé

Félicitations ! Vous avez terminé le laboratoire Uncurry Function. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.