Curryer une fonction de somme variadique : explorer son fonctionnement interne
En JavaScript, créer une fonction de somme qui accepte plusieurs arguments et fonctionne de manière curry manière peut sembler une tâche insurmontable. Cependant, c'est bel et bien possible avec la technique du currying.
Le currying consiste à convertir une fonction qui prend plusieurs arguments en une série de fonctions, chacune prenant un seul argument. Cela nous permet de créer une fonction somme qui peut être appliquée séquentiellement pour additionner plusieurs nombres.
Le secret réside dans la façon dont nous définissons la fonction :
function sum(n) { var v = function(x) { return sum(n + x); };
Ici, sum(n) renvoie une fonction v qui prend un argument x et renvoie le résultat de l'appel de sum avec n x. Cela nous permet d'enchaîner plusieurs appels à sum, chacun ajoutant le numéro suivant au résultat précédent.
Pour gérer le résultat final, nous définissons les méthodes valueOf et toString de la fonction :
v.valueOf = v.toString = function() { return n; };
Cela garantit que lorsque nous invoquons v comme valeur, il renvoie la somme accumulée n.
Enfin, nous utilisons l'opérateur unaire plus ( ) pour convertir le résultat du fonction curry en un nombre primitif.
console.log(+sum(1)(2)(3)(4));
Cela génère le résultat attendu : 10.
Ainsi, même si cela peut sembler contre-intuitif au début, il est possible de créer une fonction de somme au curry variadique en JavaScript. en utilisant les principes du curry et de la manipulation intelligente des propriétés des fonctions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!