Updated April 16, 2025

জাভাস্ক্রিপ্টে কারিং কী? ব্যবহারিক প্রয়োগ

জাভাস্ক্রিপ্টে কারিং (Currying) হলো এমন একটি টেকনিক যেখানে একটি ফাংশনকে একাধিক ফাংশনে ভাগ করে নেওয়া হয়, যাতে প্রতিটি ফাংশন একটি করে আর্গুমেন্ট গ্রহণ করে। এই ব্লগে আমরা কারিং কী, এর সুবিধা এবং ব্যবহারিক প্রয়োগ সম্পর্কে সহজ ভাষায় জানবো, সাথে থাকবে কোড উদাহরণ।

Currying in Javascript
Currying in Javascript

কারিং কী?

কারিং হলো ফাংশনাল প্রোগ্রামিংয়ের একটি টেকনিক। এটি এমন একটি প্রক্রিয়া যেখানে একটি ফাংশন, যেটি একাধিক আর্গুমেন্ট নেয়, সেটিকে একাধিক ফাংশনে ভাগ করা হয়। প্রতিটি ফাংশন শুধুমাত্র একটি আর্গুমেন্ট নেয় এবং পরবর্তী ফাংশন রিটার্ন করে। এটি কোডকে আরও মডুলার (modular) এবং রিইউজেবল (reusable) করে।

উদাহরণস্বরূপ, ধরুন আমাদের একটি ফাংশন আছে add(a, b, c) যেটি তিনটি সংখ্যা যোগ করে। কারিং ব্যবহার করে আমরা এটিকে এভাবে লিখতে পারি:

function add(a) {
  return function(b) {
    return function(c) {
      return a + b + c;
    };
  };
}

console.log(add(2)(3)(4)); // Output: 9

এখানে add(2) একটি ফাংশন রিটার্ন করে, যেটি আবার 3 নিয়ে আরেকটি ফাংশন রিটার্ন করে, এবং সবশেষে 4 নিয়ে ফলাফল দেয়।

কারিং এর সুবিধা

  • কোডের Reusability: কারিং ব্যবহার করে ফাংশনকে আংশিকভাবে কল করা যায়, যা কোড পুনরায় ব্যবহারের সুযোগ দেয়।
  • Modularity: ফাংশনগুলো ছোট ছোট অংশে ভাগ হয়, যা কোড বোঝা এবং মেইনটেইন (maintain) করা সহজ করে।
  • Flexibility: আপনি ফাংশনের একটি নির্দিষ্ট অংশকে আগে থেকে কনফিগার (configure) করে রাখতে পারেন।
  • Functional Programming: কারিং ফাংশনাল প্রোগ্রামিংয়ের নীতি মেনে চলে, যেমন ইমিউটেবিলিটি (immutability) এবং পিউর ফাংশন (pure function)।

ব্যবহারিক প্রয়োগ

কারিং এর ব্যবহার জাভাস্ক্রিপ্টে বিভিন্ন ক্ষেত্রে দেখা যায়। নিচে কিছু ব্যবহারিক উদাহরণ দেওয়া হলো:

১. ফাংশন কম্পোজিশন (composition) এবং পুনঃব্যবহার

ধরুন, আপনার একটি ফাংশন দরকার যেটি প্রতিবার একটি নির্দিষ্ট মূল্যের সাথে ডিসকাউন্ট (discount) যোগ করে। কারিং ব্যবহার করে এটি সহজ করা যায়:

function discount(discountRate) {
  return function(price) {
    return price - (price * discountRate);
  };
}

const tenPercentDiscount = discount(0.1);
console.log(tenPercentDiscount(1000)); // Output: 900
console.log(tenPercentDiscount(2000)); // Output: 1800

এখানে tenPercentDiscount ফাংশনটি বারবার ব্যবহার করা যায়, যা কোডকে আরও ক্লিন (clean) এবং রিইউজেবল করে।

২. ইভেন্ট হ্যান্ডলিং (event handling)

কারিং ব্যবহার করে ইভেন্ট হ্যান্ডলার তৈরি করা যায়। উদাহরণস্বরূপ, ধরুন আপনি একটি লগিং (logging) ফাংশন তৈরি করতে চান যেটি বিভিন্ন লেভেলের মেসেজ লগ করে:

function log(level) {
  return function(message) {
    console.log(`[${level}]: ${message}`);
  };
}

const logError = log("ERROR");
const logInfo = log("INFO");

logError("Something went wrong!"); // Output: [ERROR]: Something went wrong!
logInfo("User logged in."); // Output: [INFO]: User logged in.

৩. API কল কনফিগারেশন

API কল করার সময় কারিং ব্যবহার করে বেস ইউআরএল (base URL) বা কনফিগারেশন সেট করা যায়। উদাহরণ:

function apiCall(baseUrl) {
  return function(endpoint) {
    return fetch(`${baseUrl}${endpoint}`)
      .then(response => response.json());
  };
}

const githubApi = apiCall("https://api.github.com");
githubApi("/users/octocat").then(data => console.log(data));

এখানে githubApi ফাংশনটি বারবার বিভিন্ন এন্ডপয়েন্ট (endpoint) এর জন্য ব্যবহার করা যায়।

৪. ডেটা ফিল্টারিং (data filtering)

ধরুন, আপনি একটি অ্যারে (array) থেকে নির্দিষ্ট ক্রাইটেরিয়ার (criteria) উপর ভিত্তি করে ডেটা ফিল্টার করতে চান। কারিং এখানে সাহায্য করতে পারে:

function filterBy(property) {
  return function(value) {
    return function(items) {
      return items.filter(item => item[property] === value);
    };
  };
}

const users = [
  { name: "Alice", age: 25 },
  { name: "Bob", age: 30 },
  { name: "Charlie", age: 25 }
];

const filterByAge = filterBy("age")(25);
console.log(filterByAge(users));
// Output: [{ name: "Alice", age: 25 }, { name: "Charlie", age: 25 }]

কারিং ব্যবহারের টিপস

  • Lodash বা Ramda লাইব্রেরি: এই লাইব্রেরিগুলোতে বিল্ট-ইন (built-in) কারিং ফাংশন আছে, যেমন _.curry
  • পারফরম্যান্স (performance): অতিরিক্ত ফাংশন কলের কারণে কারিং কখনো কখনো পারফরম্যান্সে প্রভাব ফেলতে পারে। তাই বড় অ্যাপ্লিকেশনে এটি সাবধানে ব্যবহার করুন।

অ্যারো ফাংশন (Arrow Function): কারিং কোড আরও সংক্ষিপ্ত করতে অ্যারো ফাংশন ব্যবহার করা যায়। উদাহরণ:JavaScript

const add = a => b => c => a + b + c;

উপসংহার

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

ট্যাগ: জাভাস্ক্রিপ্ট, কারিং, ফাংশনাল প্রোগ্রামিং, কোডিং, ডেভেলপমেন্ট