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 Literals | Lambdas |
|---|---|---|
| প্রাথমিক ব্যবহার | অ্যানোনিমাস (অজ্ঞাত) ফাংশন তৈরি করা | ছোট, এক্সপ্রেশন হিসেবে ফাংশন তৈরি করা |
| কনটেক্সট ক্যাপচার | সাধারণত কনটেক্সট ক্যাপচার করে না | বাইরের ভেরিয়েবল ক্যাপচার করতে সক্ষম |
| ব্যবহার | কোডের মধ্যে প্রোগ্রামিং সময়কালীন ফাংশন ব্যবহার | কোডের অংশ হিসাবে সংক্ষিপ্ত এবং নমনীয় ফাংশন |
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 কোডকে আরো সংক্ষিপ্ত, নমনীয় এবং কার্যকরী করে তোলে, বিশেষ করে যখন আপনি ফাংশনকে ডাইনামিকভাবে ব্যবহার করতে চান বা কোড ব্লক হিসেবে পাস করতে চান।
Read more