Curry de fonctions en JavaScript

Nov 27 2022
Comprendre JavaScript();
prenez un récipient, ajoutez de l'eau, ajoutez quelques lignes de code, ajoutez quelques feuilles de curry, et du masala (selon votre goût), faites cuire à feu doux pendant 25 min, et, voilà la fonction curring, prêt à servir en production . Je plaisante avec les garçons et les gols.

prenez un récipient, ajoutez de l'eau, ajoutez quelques lignes de code, ajoutez quelques feuilles de curry, et du masala (selon votre goût), faites cuire à feu doux pendant 25 min, et, voilà la fonction curring, prêt à servir en production . Je plaisante avec les garçons et les gols.

Helloooo, les développeurs JS. Je suis de retour avec un sujet brûlant "Function Currying"

Cette histoire couvre :

  • qu'est-ce que le curry, comment ça marche et pourquoi il est utilisé.

L'histoire commence ici

Qu'est-ce qu'une curry de fonction ?

curry transforme une fonction qui prend plusieurs arguments [exemple : nom_fonction(a, b,c)] en plusieurs fonctions qui prennent un seul argument dans une séquence.

ok ok .., je sais que ça sonne con-fu-jing (déroutant), aussi mes réactions étaient les mêmes quand j'ai lu ceci pour la première fois.

ok comprenons-le facilement, une fonction (doSum) qui prend tous les arguments d'un seul coup, c'est-à-dire doSum(a, b, c) [exemple ci-dessous : fonction d'addition normale.

Fonction d'addition normale

Se transforme en plusieurs fonctions (addNumbers(a), (b), (c)) qui prennent un seul argument à la fois dans une séquence.

Remarque : La fonctionnalité (objectif) des deux fonctions est la même, il suffit de les renommer pour une meilleure compréhension.

Fonction curry

voici ce qu'est la fonction curry selon les geeks pour les geeks :

C'est une technique de programmation fonctionnelle, transformation de la fonction de plusieurs arguments en plusieurs fonctions d'un seul argument en séquence.

en termes simples, la fonction au lieu de prendre tous les arguments à la fois, la fonction prend le premier argument et renvoie la fonction qui prend l'autre argument, puis renvoie à nouveau une autre fonction qui prend le troisième argument, et ainsi de suite jusqu'à ce que tous les arguments soient prises (exemple dans l'image nommée : fonction currying).

Comment fonctionne le curry ?

curring en javascript peut être un peu difficile à comprendre car il s'agit de javascript

mais essayons de comprendre, ci-dessous un exemple de fonction simple

Fonction simple

ici, la fonction "doSum" ajoute l'argument donné et renvoie la somme de tous les arguments passés.

ci-dessous est la version curry de la même fonction (juste renommée, pour une meilleure compréhension)

la sortie de la fonction ci-dessus et ci-dessous sera la même, 18

addNumbers est la version curry de la fonction ci-dessus doSum, addNumber la fonction parent prend l'argument 5 dans notre cas, et renvoie une autre fonction anonyme qui prend un autre argument 6 dans notre cas et le processus continue jusqu'à ce que tous les paramètres soient passés, le La dernière fonction anonyme renvoie la valeur après avoir traité toutes les entrées.

nous avons implémenté des fonctions imbriquées dans l'exemple ci-dessus, de sorte que chacune des fonctions prend un argument et renvoie une autre fonction jusqu'à ce que tous les arguments ne soient pas terminés.

vous pouvez curry votre fonction de 2 manières différentes, en utilisant la fonction bind et en utilisant des fermetures, voyons à quoi cela ressemble

curry de fonction à l'aide de la fonction bind

si vous ne savez pas ce qu'est la fonction de liaison, consultez cette histoire .

ici, dans l'exemple ci-dessus, nous utilisons la fonction de liaison de javascript, et en utilisant la fonction de liaison, nous utilisons la fonction "onBoardUser".

basicCompanyDetails est similaire pour tous les utilisateurs intégrés, nous voulons donc rendre les détails disponibles par défaut pour tous les utilisateurs intégrés, ici nous passons un argument "basicCompanyDetails" à la fonction de liaison et créons une instance de "onBoardUser", ici la fonction bind renvoie la fonction que vous pouvez stocker à un endroit en mémoire et l'exécuter plus tard, ici nous stockons la fonction dans addUser et nous invoquons pour tous les utilisateurs.

c'est ainsi que vous pouvez curry votre fonction en utilisant la fonction bind en javascript. plus d'exemples dans l'image ci-dessous.

vous pouvez également transmettre les deux paramètres lors de l'appel de la méthode addUserToSales, cela produira les mêmes résultats.

fonction curry en utilisant des fermetures.

les fermetures sont un concept très courant mais délicat en javascript, mais peu discuté, vous pouvez lui donner une lecture sur ce que sont les fermetures ici .

essayons d'implémenter le curry de fonction en utilisant des fermetures.

dans l'exemple ci-dessus, nous avons créé une fonction "onBoardUser" qui prend un argument et renvoie une autre fonction anonyme qui prend un autre argument, résume les détails et renvoie.

nous appelons la fonction "onBoardUser" avec un argument, c'est-à-dire accountDepartmentDetails et le stockons dans une variable (rappelez-vous que onBoardUser renvoie une fonction), nous stockons donc une fonction dans une variable addUsertoAccounts et maintenant la variable a une fonction qui peut être appelée à tout moment avec un argument qu'il demande, nous avons donc invoqué la fonction anonyme (renvoyée par onBoardUser) stockée dans addUsertoAccounts avec un argument (détails de l'utilisateur, c'est-à-dire detailsOfJohn).

une fois que la fonction est appelée, elle a terminé l'exécution de l'instruction présente à l'intérieur et imprimé la sortie.

si les fonctions étaient invoquées après quelques 10 000 lignes de code également, il imprimerait la même sortie, car il s'agit d'une fermeture, et il mémorise la portée lexicale de celui-ci.

Curring avec ES6 :

curry en utilisant ES6

c'est ainsi que vous pouvez utiliser la curry de fonction avec des fermetures dans JS.

Pourtant, vous pourriez avoir une question dans votre tête, si nous pouvons passer plusieurs arguments à une fonction, alors pourquoi avons-nous besoin de curry ?

cela répondra probablement à ces doutes.

pourquoi il est utilisé

Pourquoi? Pourquoi? Pourquoi?

  • currying est une technique qui divise les fonctions en fonctions plus petites, chaque fonction individuelle a son propre travail et qui rend votre fonction pure et moins sujette aux erreurs et aux effets secondaires.
  • exemple : la première fonction valide les coordonnées de l'utilisateur, la seconde valide les coordonnées de l'entreprise, etc.
  • il est utilisé dans la programmation fonctionnelle pour utiliser des fonctions d'ordre supérieur
  • cela vous aide à garder votre code propre et organisé.
  • de plus, vous pouvez utiliser le curry comme un mécanisme qui vous aide à vérifier que vous avez tout avant de poursuivre
  • exemple : chaque fonction imbriquée ne sera pas exécutée si elle ne reçoit pas les arguments requis.