Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée d'exemples de curry js

零下一度
Libérer: 2017-06-26 15:14:38
original
1504 Les gens l'ont consulté

1. Source

En informatique, le curry consiste à transformer une fonction qui accepte plusieurs paramètres en une fonction qui accepte un seul paramètre (le premier paramètre de la fonction d'origine), et une technique pour renvoyer un nouvelle fonction qui accepte les arguments restants et renvoie un résultat. Cette technique a été nommée par Christopher Strachey en l'honneur du logicien Haskell Curry, bien qu'elle ait été inventée par Moses Schnfinkel et Gottlob Frege.

2. Curring(1)(2)(3)(4)() Comment ajouter des paramètres pour que le résultat soit 10 ?

1. En fait, il suffit de réfléchir à comment conserver chaque paramètre, et enfin accumuler les paramètres lors de l'appel ? C'est là l'objet de notre réflexion.

function keepParams(){var arg = [];return function params(){if(arguments.length === 0){return arg;
    }
    Array.prototype.push.apply(arg,arguments);  //对apply方法不熟悉的可以去百度下return params;
}
}var curring = keepParams();
console.log(curring(1)(2)(3)(4)()); // [1, 2, 3, 4]
Copier après la connexion

2. Grâce à la première étape, nous pouvons obtenir les paramètres. Ensuite, nous pouvons faire ce que nous voulons faire ensuite.

Comment implémenter l'addition ?

3. Changez la fonction de base

function add(){var sum = 0,l = arguments.length;for(var i = 0; i < l; i++){
        sum += arguments[i];
    }return sum;
};function keepParams(fn){var arg = [];return function params(){if(arguments.length === 0){return fn.apply(this,arg);
        }
        Array.prototype.push.apply(arg,arguments);  //对apply方法不熟悉的可以去百度下return params;
    }
}var curring = keepParams(add);//console.log(curring(1)(2)(3)(4)()); // 10console.log(curring(1)(2,3,4)()); // 10
Copier après la connexion

4. Maintenant que la troisième étape de l'addition est mise en œuvre, multipliez et divisez. Attendez qu'une série d'opérations soit terminée. Cependant, vous devez faire attention à l'utilisation des fermetures si vous appelez la même méthode deux fois de suite.

arg sera enregistré en mémoire

console.log(curring(1)(2)(3)(4)()); // 10console.log(curring(1)(2,3,4)()); // 20
Copier après la connexion

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal