Function Literals এবং Lambdas

Functional Programming (ফাংশনাল প্রোগ্রামিং) - ডি প্রোগ্রামিং (D Programming) - Computer Programming

338

Function Literals এবং Lambdas


Function Literals এবং Lambdas হল শক্তিশালী ফিচার যা প্রোগ্রামিং ভাষায় ফাংশন বা কোডের ব্লককে প্রাথমিকভাবে এক্সপ্রেশন হিসেবে তৈরি এবং ব্যবহার করার সুবিধা দেয়। এই ধারণাগুলি কোডের পুনঃব্যবহারযোগ্যতা এবং নমনীয়তা বাড়াতে সাহায্য করে। ডি প্রোগ্রামিং ভাষায় Function Literals এবং Lambdas ব্যবহার করার মাধ্যমে আপনি হালকা ও কার্যকরী কোড লিখতে পারেন।


1. Function Literals (ফাংশন লিটারেলস)

Function Literals হল এমন একটি ফাংশন যা কোথাও ডিফাইন না করে, সরাসরি এক্সপ্রেশন হিসেবে ব্যবহার করা হয়। এটি মূলত একটি অ্যানোনিমাস (অজ্ঞাত) ফাংশন যা একটি ভেরিয়েবল বা এক্সপ্রেশন হিসেবে প্রদর্শিত হয়।

ডি প্রোগ্রামিং ভাষায় function literals কোডের মধ্যে প্রোগ্রামের সময়কালীন ফাংশন তৈরি করতে ব্যবহৃত হয়।

উদাহরণ: Function Literal

import std.stdio;

void main() {
    // Function literal (anonymous function)
    auto add = (int a, int b) => a + b;
    
    writeln(add(5, 3));  // আউটপুট: 8
}

এখানে, auto add একটি function literal বা অ্যানোনিমাস ফাংশন তৈরি করেছে, যা a + b ফেরত দেয়। => একটি শর্টকার্ট সিঙ্কট্যাক্স যা এক লাইনের ফাংশন তৈরি করার জন্য ব্যবহৃত হয়।

Function Literals এর সুবিধা:

  • কোড কমপ্যাক্ট এবং পড়তে সহজ হয়।
  • কোডের যেকোনো জায়গায় ফাংশন ব্যবহার করা যায়, যা বিশেষ করে ফাংশন প্যারামিটার হিসেবে কার্যকরী।

2. Lambdas (ল্যাম্বডা)

Lambdas হল অ্যানোনিমাস ফাংশন যা Function Literals এর মতোই কাজ করে, তবে এর একটি বিস্তৃত ধারণা রয়েছে যেখানে আপনি ফাংশনটি ডাইনামিকভাবে কাস্টমাইজ এবং ব্যবহার করতে পারেন। ল্যাম্বডা ফাংশন সাধারণত ছোট, এক লাইনের এবং এক্সপ্রেশন হিসেবে তৈরি করা হয় যা অন্য ফাংশন বা প্রসেসে পাস করা যায়।

ডি প্রোগ্রামিং ভাষায় Lambdas সাধারণত function literals এর মতোই ব্যবহার করা হয়, তবে এদের জন্য কিছু অতিরিক্ত সুবিধা থাকতে পারে, যেমন কনটেক্সট ক্যাপচার করা।

উদাহরণ: Lambda Function

import std.stdio;

void main() {
    // Lambda function
    auto multiply = (int a, int b) => a * b;
    
    writeln(multiply(4, 5));  // আউটপুট: 20
}

এখানে multiply একটি lambda function তৈরি করেছে যা দুটি সংখ্যা গুণ করার কাজ করে।

উদাহরণ: Lambda with Context Capture (কনটেক্সট ক্যাপচার)

import std.stdio;

void main() {
    int multiplier = 5;

    // Lambda capturing external variable
    auto multiply = (int a) => a * multiplier;
    
    writeln(multiply(4));  // আউটপুট: 20
}

এখানে multiply ল্যাম্বডা ফাংশন multiplier ভেরিয়েবলটি ক্যাপচার করে, এবং এটি গুণনীয়ক হিসেবে ব্যবহৃত হয়।


3. Function Literals এবং Lambdas এর পার্থক্য

বৈশিষ্ট্যFunction LiteralsLambdas
প্রাথমিক ব্যবহারঅ্যানোনিমাস (অজ্ঞাত) ফাংশন তৈরি করাছোট, এক্সপ্রেশন হিসেবে ফাংশন তৈরি করা
কনটেক্সট ক্যাপচারসাধারণত কনটেক্সট ক্যাপচার করে নাবাইরের ভেরিয়েবল ক্যাপচার করতে সক্ষম
ব্যবহারকোডের মধ্যে প্রোগ্রামিং সময়কালীন ফাংশন ব্যবহারকোডের অংশ হিসাবে সংক্ষিপ্ত এবং নমনীয় ফাংশন

4. Function Literals এবং Lambdas এর ব্যবহার

Function Literals এবং Lambdas কোডের নমনীয়তা এবং কার্যকারিতা বৃদ্ধি করতে সাহায্য করে, বিশেষ করে যখন কোডের ছোট ছোট ব্লকগুলো এক্সপ্রেশন বা অ্যানোনিমাস ফাংশন হিসেবে ব্যবহৃত হয়।

উদাহরণ 1: Array Sorting with Lambda

import std.stdio;
import std.algorithm;
import std.range;

void main() {
    int[] arr = [5, 2, 8, 1, 3];
    
    // Lambda function to sort array in ascending order
    sort(arr, (a, b) => a < b);
    
    writeln(arr);  // আউটপুট: [1, 2, 3, 5, 8]
}

এখানে, lambda ব্যবহার করে অ্যারে ascending order অনুযায়ী সাজানো হয়েছে। ল্যাম্বডা ফাংশন (a, b) => a < b একটি তুলনা কার্য পরিচালনা করে যা দুইটি মানের তুলনা করে ঠিক করে দেয় কোনটি ছোট।

উদাহরণ 2: Filtering with Lambda

import std.stdio;
import std.algorithm;
import std.range;

void main() {
    int[] arr = [5, 8, 12, 3, 6, 9];

    // Lambda function to filter even numbers
    auto evens = filter!(x => x % 2 == 0)(arr);
    
    writeln(evens);  // আউটপুট: [8, 12, 6]
}

এখানে, lambda function ব্যবহার করা হয়েছে অ্যারে থেকে even numbers বের করার জন্য। filter! ফাংশন ল্যাম্বডা ফাংশনকে প্রক্রিয়ায় ফিল্টারিং কাজে ব্যবহার করছে।


সারসংক্ষেপ

  • Function Literals: ছোট, অ্যানোনিমাস ফাংশন যা এক্সপ্রেশন হিসেবে ব্যবহৃত হয়।
  • Lambdas: বিশেষ ধরনের function literals যা বাইরের কনটেক্সট ক্যাপচার করতে সক্ষম এবং একটি ছোট, নমনীয় ফাংশন হিসেবে ব্যবহৃত হয়।

Function Literals এবং Lambdas কোডকে আরো সংক্ষিপ্ত, নমনীয় এবং কার্যকরী করে তোলে, বিশেষ করে যখন আপনি ফাংশনকে ডাইনামিকভাবে ব্যবহার করতে চান বা কোড ব্লক হিসেবে পাস করতে চান।

Content added By
Promotion

Are you sure to start over?

Loading...