Perbincangan terperinci tentang kari dalam JavaScript

王林
Lepaskan: 2024-08-29 13:44:50
asal
301 orang telah melayarinya

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

Kari ialah teknik pengaturcaraan berfungsi di mana daripada mengambil berbilang argumen, fungsi mengambil satu hujah dan mengembalikan fungsi baharu yang mengambil hujah seterusnya. Proses ini berterusan sehingga semua hujah diterima, dan kemudian fungsi utama dilaksanakan.

Tujuan utama kari adalah untuk menjadikan fungsi boleh diguna semula dan meningkatkan fleksibiliti kod.

Bagaimanakah karipap berfungsi?

Kari ialah proses menukar fungsi kembali kepada fungsi, yang mengambil sebahagian daripada argumen dan menunggu argumen yang tinggal. Ini biasanya digunakan untuk fungsi dengan dua atau lebih argumen. Kari memudahkan komposisi fungsi dan aplikasi fungsi separa dalam pengaturcaraan berfungsi.

Contoh Karipap:

Fungsi am

Andaikan terdapat fungsi mudah yang menambah dua nombor:

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

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

Salin selepas log masuk

Fungsi karipap

Sekarang, kami akan mengubah suai fungsi di atas dengan kari:

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

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

Salin selepas log masuk

Penjelasan:

  • Memanggil add(2) mengembalikan fungsi baharu yang menerima hujah kedua.
  • Fungsi baharu disimpan sebagai addTwo.
  • Memanggil addTwo(3) output 5.

Khasiat Karipap:

  1. Kebolehgunaan semula: Fungsi boleh digunakan semula dengan mudah dengan kari. Setelah hujah awal diluluskan, fungsi yang sama boleh digunakan untuk hujah baharu.

    Contoh:

    javascriptCopy code
    const multiply = x => y => x * y;
    
    const multiplyByTwo = multiply(2);
    console.log(multiplyByTwo(3)); // Output: 6
    console.log(multiplyByTwo(4)); // Output: 8
    
    
    Salin selepas log masuk
  2. Kebolehbacaan Kod: Kari meningkatkan kebolehbacaan kod. Ini menjadikan gelagat fungsi lebih jelas, kerana setiap fungsi bertanggungjawab untuk satu tugas.

    Contoh:

    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!
    
    
    Salin selepas log masuk
  3. Komposisi Fungsi: Fungsi boleh digubah dengan mudah dengan kari, yang berguna untuk operasi yang kompleks.

    Contoh:

    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!
    
    
    Salin selepas log masuk
  4. Aplikasi Separa: Currying membenarkan penggunaan separa fungsi, yang membantu menyimpan hujah awal untuk menghantar hujah lain pada masa hadapan.

    Contoh:

    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
    
    
    Salin selepas log masuk

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

Salin selepas log masuk

ব্যাখ্যা:

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

Conclusion

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

Atas ialah kandungan terperinci Perbincangan terperinci tentang kari dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!