ভেরিয়েবল এবং প্যাটার্ন ম্যাচিং (Variables and Pattern Matching) in Elixir
Elixir একটি ফাংশনাল প্রোগ্রামিং ভাষা এবং এর মধ্যে ভেরিয়েবল এবং প্যাটার্ন ম্যাচিং খুবই গুরুত্বপূর্ণ বিষয়। Elixir তে ভেরিয়েবলগুলো সাধারণত immutable (অপরিবর্তনীয়) থাকে, এবং প্যাটার্ন ম্যাচিং একটি শক্তিশালী বৈশিষ্ট্য যা ফাংশনাল প্রোগ্রামিংয়ের অন্যতম বৈশিষ্ট্য।
ভেরিয়েবল (Variables) in Elixir
Elixir তে ভেরিয়েবল হলো একটি উপাদান যেখানে আপনি ডেটা স্টোর করেন। তবে, Elixir তে ভেরিয়েবল immutable, অর্থাৎ একবার ভেরিয়েবলকে একটি মান নির্ধারণ করার পর সেই মান পরিবর্তন করা সম্ভব নয়। নতুন মান সেট করতে হলে নতুন ভেরিয়েবল তৈরি করতে হবে।
ভেরিয়েবল ডিফাইন করা:
x = 5একটি ভেরিয়েবলে নতুন মান অ্যাসাইন করা:
Elixir তে আপনি কোনো ভেরিয়েবলের মান পরিবর্তন করতে পারবেন না। অর্থাৎ:x = 5 # প্রথমে x এর মান 5 x = 10 # এইখানে x আবার নতুন মান 10 পাবে, তবে পুরনো x-এর মান 5 থাকেভেরিয়েবল ব্যবহার:
x = 5 IO.puts(x) # আউটপুট হবে 5
প্যাটার্ন ম্যাচিং (Pattern Matching) in Elixir
প্যাটার্ন ম্যাচিং হল একটি শক্তিশালী বৈশিষ্ট্য যা Elixir তে মান এবং ভেরিয়েবলগুলোর মধ্যে সম্পর্ক সঠিকভাবে নির্ধারণ করতে সাহায্য করে। এটি কোডকে আরও পরিষ্কার এবং কার্যকরী করে তোলে।
Elixir তে প্যাটার্ন ম্যাচিং অটোমেটিক্যালি ঘটে যখন আপনি কোনো ভেরিয়েবল বা ডেটা স্ট্রাকচারকে কোন মানের সাথে তুলনা করেন। এটি প্রথমেই ডেটার কাঠামো বা প্যাটার্নের সাথে মানটি তুলনা করে, এবং যদি প্যাটার্ন মেলে তবে সেটি সফল হয়।
প্যাটার্ন ম্যাচিং উদাহরণ:
ভেরিয়েবলের সাথে প্যাটার্ন ম্যাচিং:
- Elixir তে, যখন একটি ভেরিয়েবল একটি মানের সাথে ম্যাচ হয়, তখন Elixir সেটিকে "বাইন্ড" করে অর্থাৎ সেই ভেরিয়েবলে সেই মানটি অ্যাসাইন করা হয়।
x = 5 # এখানে x এর মান 5 হবেএটম (Atoms) এবং প্যাটার্ন ম্যাচিং:
প্যাটার্ন ম্যাচিংটি এটমের সাথেও কাজ করে।:ok = :ok # প্যাটার্ন ম্যাচিং সফল হবে :ok = :error # এখানে প্যাটার্ন ম্যাচিং ব্যর্থ হবেটুপল (Tuple) এর সাথে প্যাটার্ন ম্যাচিং:
Elixir তে টুপলেও প্যাটার্ন ম্যাচিং করা সম্ভব।{a, b} = {1, 2} IO.puts(a) # আউটপুট হবে 1 IO.puts(b) # আউটপুট হবে 2লিস্ট (Lists) এর সাথে প্যাটার্ন ম্যাচিং:
লিস্টে প্যাটার্ন ম্যাচিং খুব সাধারণ এবং শক্তিশালী একটি বৈশিষ্ট্য।[a, b, c] = [1, 2, 3] IO.puts(a) # আউটপুট হবে 1 IO.puts(b) # আউটপুট হবে 2 IO.puts(c) # আউটপুট হবে 3নোট: প্যাটার্ন ম্যাচিং কেবলমাত্র সঠিক কাঠামো মিললেই সফল হয়। যেমন:
[a, b, c] = [1, 2] # এখানে প্যাটার্ন ম্যাচিং ব্যর্থ হবে কারণ লিস্টে ৩টি উপাদান প্রয়োজননেস্টেড প্যাটার্ন ম্যাচিং:
Elixir তে নেস্টেড ডেটা স্ট্রাকচারেও প্যাটার্ন ম্যাচিং করা যায়।{a, {b, c}} = {1, {2, 3}} IO.puts(a) # আউটপুট হবে 1 IO.puts(b) # আউটপুট হবে 2 IO.puts(c) # আউটপুট হবে 3প্যাটার্ন ম্যাচিং ফাংশন:
Elixir তে প্যাটার্ন ম্যাচিং ফাংশনাল প্রোগ্রামিংয়ের গুরুত্বপূর্ণ একটি অংশ। এটি সাধারণত ফাংশন ডিফাইনেশনে ব্যবহৃত হয়, যেখানে ফাংশন আলাদা-আলাদা প্যাটার্নের জন্য আলাদা আচরণ প্রদর্শন করে।defmodule Greeter do def greet(:morning) do IO.puts("Good Morning!") end def greet(:evening) do IO.puts("Good Evening!") end def greet(_) do IO.puts("Hello!") end end Greeter.greet(:morning) # আউটপুট হবে "Good Morning!" Greeter.greet(:night) # আউটপুট হবে "Hello!"
প্যাটার্ন ম্যাচিং এর আরও কিছু উদাহরণ
ব্যর্থ প্যাটার্ন ম্যাচিং:
{a, b} = {1, 2, 3} # ব্যর্থ হবে, কারণ টুপলটি তিনটি উপাদান নিয়ে তৈরিব্যবহারিক কেস:
Elixir তে প্যাটার্ন ম্যাচিং ডেটা প্রসেসিংয়ের সময় অনেক কাজে আসে।defmodule MyModule do def process([head | tail]) do IO.puts("Head: #{head}") IO.puts("Tail: #{inspect(tail)}") end end MyModule.process([1, 2, 3, 4]) # আউটপুট হবে: # Head: 1 # Tail: [2, 3, 4]
সারসংক্ষেপ
Elixir তে ভেরিয়েবল এবং প্যাটার্ন ম্যাচিং একটি শক্তিশালী কনসেপ্ট। ভেরিয়েবল গুলি immutable এবং তাদের মান একবার অ্যাসাইন করার পর পরিবর্তন করা যায় না। প্যাটার্ন ম্যাচিং Elixir এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা আপনাকে ভেরিয়েবলগুলির মানের সাথে প্যাটার্ন ম্যাচ করার মাধ্যমে কোডের কার্যকারিতা এবং দক্ষতা বাড়াতে সাহায্য করে। এটি ডেটা স্ট্রাকচারের সাথে সহজে কাজ করতে এবং ফাংশনাল প্রোগ্রামিংয়ের মধ্যে প্যাটার্ন মেচিংয়ের সুবিধা প্রদান করে।
Read more