Maison >interface Web >js tutoriel >Explication détaillée d'exemples de curry js
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]
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
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
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!