Maison > interface Web > js tutoriel > Comment une fonction de somme au curry en JavaScript peut-elle gérer plusieurs arguments ?

Comment une fonction de somme au curry en JavaScript peut-elle gérer plusieurs arguments ?

Barbara Streisand
Libérer: 2024-11-29 06:03:10
original
905 Les gens l'ont consulté

How Can a Curried Sum Function in JavaScript Handle Multiple Arguments?

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);
  };
Copier après la connexion

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;
  };
Copier après la connexion

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));
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal