Currying এবং Partial Application এর জন্য _.curry() এবং _.partial()

Function Methods - লোড্যাশ (Lodash) - Web Development

194

Lodash লাইব্রেরিতে _.curry() এবং _.partial() দুটি শক্তিশালী ফাংশন রয়েছে, যেগুলি Currying এবং Partial Application ধারণা বাস্তবায়ন করতে ব্যবহৃত হয়। এগুলি আপনাকে আপনার ফাংশনগুলিকে আরও নমনীয় এবং পুনরায় ব্যবহারযোগ্য (reusable) করে তোলে, এবং কোডকে আরও পরিষ্কার এবং সহজে ব্যবস্থাপনা করা যায়।

১. Currying এবং Partial Application এর ধারণা

  • Currying: এটি একটি ফাংশনকে এমনভাবে পরিবর্তন করা, যাতে এটি একাধিক আর্গুমেন্ট নেয়ার পরিবর্তে একবারে একটি আর্গুমেন্ট নেয় এবং পরবর্তীতে বাকি আর্গুমেন্টগুলো আসতে পারে। এটি ধীরে ধীরে ফাংশনকে পূর্ণ করতে দেয়।
  • Partial Application: এটি একটি প্রক্রিয়া যেখানে একটি ফাংশনের কিছু আর্গুমেন্ট আগে থেকেই নির্ধারিত হয়ে যায়, এবং বাকি আর্গুমেন্টগুলো পরবর্তীতে দেয়া হয়।

Lodash এ _.curry() এবং _.partial() এই দুটি ধারণার বাস্তবায়ন করে।


২. _.curry() – Currying

_.curry() ফাংশনটি একটি ফাংশনকে currying করে, অর্থাৎ এটি ফাংশনের আর্গুমেন্টগুলোকে একের পর এক গ্রহণ করতে দেয়। এটি ফাংশনকে এমনভাবে তৈরি করে যাতে আপনি প্রাথমিকভাবে কিছু আর্গুমেন্ট পাস করতে পারেন এবং পরে বাকি আর্গুমেন্টগুলিও পাস করা যাবে।

Syntax:

_.curry(func)
  • func: যে ফাংশনটিকে currying করতে হবে।

উদাহরণ:

const _ = require('lodash');

// একটি সাধারণ function
function add(a, b, c) {
  return a + b + c;
}

// Currying করা function
let curriedAdd = _.curry(add);

let result = curriedAdd(1)(2)(3);
console.log(result); // 6

এখানে, add() ফাংশনটি _.curry() এর মাধ্যমে currying করা হয়েছে। প্রথমে 1 পাস করে, তারপর 2, এবং শেষে 3 পাস করার মাধ্যমে আমরা পুরো add() ফাংশনের ফলাফল পেয়েছি।


৩. _.partial() – Partial Application

_.partial() ফাংশনটি একটি ফাংশনের আংশিক আর্গুমেন্ট প্রদান করে এবং বাকি আর্গুমেন্টগুলোর জন্য ফাংশনটিকে পরে কল করার সুযোগ দেয়। এটি মূলত এক বা একাধিক আর্গুমেন্ট আগে থেকেই ফিক্স করে এবং পরবর্তীতে অন্যান্য আর্গুমেন্ট পাস করতে দেয়।

Syntax:

_.partial(func, [partials])
  • func: যে ফাংশনটি আংশিকভাবে নির্ধারণ করতে হবে।
  • [partials]: আর্গুমেন্ট যা আগে থেকেই নির্ধারণ করা হবে।

উদাহরণ:

const _ = require('lodash');

// একটি সাধারণ function
function greet(greeting, name) {
  return `${greeting}, ${name}!`;
}

// Partial application করে greet function তৈরি করা
let greetHello = _.partial(greet, 'Hello');

let result = greetHello('John');
console.log(result); // 'Hello, John!'

এখানে, greet() ফাংশনের প্রথম আর্গুমেন্ট Hello আগেই নির্ধারণ করা হয়েছে _.partial() ব্যবহার করে, এবং পরবর্তীতে name প্যারামিটার পাস করা হচ্ছে।


৪. _.curry() এবং _.partial() এর মধ্যে পার্থক্য

  • Currying: Currying একটি ফাংশনকে এমনভাবে তৈরি করে যাতে আপনি আর্গুমেন্টগুলো একের পর এক প্রদান করতে পারেন। এটি প্রতিটি আর্গুমেন্ট পৃথকভাবে নেয় এবং ফাংশনের কাজটি পুরোপুরি সম্পন্ন হওয়ার আগে প্রত্যেকটি অংশের জন্য আর্গুমেন্ট নেয়।
  • Partial Application: Partial application এমন একটি পদ্ধতি, যেখানে আপনি ফাংশনের কিছু আর্গুমেন্ট আগেই নির্ধারণ করে দেন এবং বাকি আর্গুমেন্টগুলো পরবর্তীতে পাস করেন। এটি আর্গুমেন্টগুলি আগেই স্থির করে ফাংশনটিকে আরও নির্দিষ্ট কাজে ব্যবহার করার সুযোগ দেয়।

৫. Combining _.curry() and _.partial()

_.curry() এবং _.partial() একত্রে ব্যবহার করা যেতে পারে যাতে আপনি খুব নমনীয় ফাংশন তৈরি করতে পারেন, যা নির্দিষ্ট কাজগুলো আরও সহজ করে দেয়।

উদাহরণ:

const _ = require('lodash');

// একটি সাধারণ function
function calculatePrice(price, tax, discount) {
  return price + (price * tax) - discount;
}

// Partial function: Tax হার fix করা হলো
let calculateWithTax = _.partial(calculatePrice, _, 0.1);

// Currying করা function: Discount কে একে একে পাস করা যাবে
let curriedCalculate = _.curry(calculateWithTax);

let result = curriedCalculate(100)(5); // 100 price, 0.1 tax, 5 discount
console.log(result); // 105

এখানে, প্রথমে _.partial() ব্যবহার করে tax কে fix করা হয়েছে, এবং পরবর্তীতে _.curry() ব্যবহার করে price এবং discount আলাদাভাবে পাস করা যাচ্ছে।


উপসংহার

Lodash এর _.curry() এবং _.partial() ফাংশনগুলো Currying এবং Partial Application ধারণাগুলিকে বাস্তবায়ন করতে সাহায্য করে। এগুলি ব্যবহার করলে ফাংশনগুলো আরও নমনীয়, পুনরায় ব্যবহারযোগ্য এবং দ্রুত হবে। Currying একটি ফাংশনকে আরও পরিষ্কারভাবে ডাকা যায়, যখন Partial Application ফাংশনের আর্গুমেন্টগুলিকে আগেই কিছু অংশ নির্ধারণ করে কাজে লাগানো সম্ভব করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...