Maison  >  Article  >  interface Web  >  Discussion détaillée sur le curry en JavaScript

Discussion détaillée sur le curry en JavaScript

王林
王林original
2024-08-29 13:44:50335parcourir

Currying in JavaScript সম্পর্কে বিস্তারিত আলোচনা

Le currying est une technique de programmation fonctionnelle où, au lieu de prendre plusieurs arguments, une fonction prend un seul argument et renvoie une nouvelle fonction qui prend l'argument suivant. Ce processus se poursuit jusqu'à ce que tous les arguments soient reçus, puis la fonction principale est exécutée.

L'objectif principal du curry est de rendre les fonctions réutilisables et d'augmenter la flexibilité du code.

Comment fonctionne le curry ?

Le currying est le processus de reconversion d'une fonction en fonction, qui prend une partie des arguments et attend les arguments restants. Ceci est généralement utilisé pour les fonctions avec deux arguments ou plus. Le currying simplifie la composition des fonctions et les applications de fonctions partielles dans la programmation fonctionnelle.

Exemple de curry :

Fonction générale

Supposons qu'il existe une fonction simple qui ajoute deux nombres :

javascriptCopy code
function add(x, y) {
    return x + y;
}

console.log(add(2, 3)); // Output: 5

Fonction curry

Maintenant, nous allons modifier la fonction ci-dessus en curry :

javascriptCopy code
function add(x) {
    return function(y) {
        return x + y;
    };
}

const addTwo = add(2); // Currying: প্রথম আর্গুমেন্ট পাস করা হচ্ছে
console.log(addTwo(3)); // Output: 5

Explication :

  • L'appel de add(2) renvoie une nouvelle fonction qui accepte un deuxième argument.
  • La nouvelle fonction est enregistrée sous addTwo.
  • L'appel de addTwo(3) produit 5.

Avantages du curry :

  1. Réutilisabilité : Les fonctions peuvent être facilement réutilisées par curry. Une fois l'argument initial passé, la même fonction peut être utilisée pour de nouveaux arguments.

    Exemple :

    javascriptCopy code
    const multiply = x => y => x * y;
    
    const multiplyByTwo = multiply(2);
    console.log(multiplyByTwo(3)); // Output: 6
    console.log(multiplyByTwo(4)); // Output: 8
    
    
  2. Lisibilité du code : Le currying augmente la lisibilité du code. Cela rend le comportement des fonctions plus clair, puisque chaque fonction est responsable d'une seule tâche.

    Exemple :

    javascriptCopy code
    const greet = greeting => name => `${greeting}, ${name}!`;
    
    const sayHello = greet("Hello");
    console.log(sayHello("Alice")); // Output: Hello, Alice!
    console.log(sayHello("Bob"));   // Output: Hello, Bob!
    
    
  3. Composition des fonctions : Les fonctions peuvent être facilement composées par curry, ce qui est utile pour les opérations complexes.

    Exemple :

    javascriptCopy code
    const compose = (f, g) => x => f(g(x));
    
    const toUpperCase = x => x.toUpperCase();
    const exclaim = x => `${x}!`;
    
    const shout = compose(exclaim, toUpperCase);
    
    console.log(shout("hello")); // Output: HELLO!
    
    
  4. Application partielle : Le currying permet une application partielle des fonctions, ce qui permet de sauvegarder les arguments initiaux pour transmettre d'autres arguments à l'avenir.

    Exemple :

    javascriptCopy code
    const partialAdd = (a, b, c) => a + b + c;
    
    const curriedAdd = a => b => c => a + b + c;
    
    const addFiveAndSix = curriedAdd(5)(6);
    console.log(addFiveAndSix(7)); // Output: 18
    
    

Currying এবং Closures

Currying ফাংশন Closures-এর উপর ভিত্তি করে কাজ করে। প্রতিটি নতুন ফাংশন তৈরি হওয়ার সময় এটি পূর্বের আর্গুমেন্টগুলোকে মেমরিতে সংরক্ষণ করে রাখে।

উদাহরণ:

javascriptCopy code
function add(x) {
    return function(y) {
        return function(z) {
            return x + y + z;
        };
    };
}

console.log(add(1)(2)(3)); // Output: 6

ব্যাখ্যা:

  • প্রথম কলের সময় x সংরক্ষণ হয়, দ্বিতীয় কলের সময় y সংরক্ষণ হয়, এবং তৃতীয় কলের সময় z সংরক্ষণ হয়। শেষে তাদের যোগফল রিটার্ন হয়।

Conclusion

Currying হলো JavaScript এর একটি শক্তিশালী প্রোগ্রামিং কৌশল যা ফাংশনাল প্রোগ্রামিংকে সহজ করে এবং কোডের পুনরায় ব্যবহারযোগ্যতা এবং মডুলারিটি বাড়ায়। Currying এর মাধ্যমে একটি ফাংশনকে ধাপে ধাপে প্রয়োগ করা যায় এবং এটি কোডকে ছোট ও পরিষ্কার করে। যদিও Currying সব ক্ষেত্রে উপযুক্ত নয়, কিন্তু নির্দিষ্ট কিছু সমস্যা সমাধানে এটি একটি অমূল্য টুল। JavaScript ডেভেলপারদের জন্য Currying এর কনসেপ্ট এবং এর প্রয়োগ বোঝা অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি জটিল সমস্যাগুলিকে আরও কার্যকরীভাবে সমাধান করতে সাহায্য করে।

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!

Déclaration:
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