Elixir তে Map এর বিভিন্ন অপারেশন (put, update, fetch)
Elixir তে Map একটি ডেটা স্ট্রাকচার, যা key-value জোড়া ধারণ করে। এটি একটি গুরুত্বপূর্ণ এবং খুবই ব্যবহৃত ডেটা স্ট্রাকচার, যা অর্ডার করা, অপরিবর্তনীয় (immutable) এবং সহজে কাস্টমাইজ করা যায়। Map এর মধ্যে বিভিন্ন অপারেশন করা যায়, যেমন put, update, এবং fetch। এই অপারেশনগুলো আপনাকে ম্যাপের মধ্যে মান (value) যোগ করা, পরিবর্তন করা এবং অ্যাক্সেস করার সুবিধা দেয়।
1. put/3 (Adding or Updating a Key-Value Pair)
put অপারেটরটি একটি নতুন কীগুচ্ছ (key-value pair) যোগ করতে বা পূর্বের মান (value) আপডেট করতে ব্যবহার করা হয়।
সিনট্যাক্স:
Map.put(map, key, value)- ব্যবহার:
এটি একটি নতুন ম্যাপ রিটার্ন করবে যেখানে নির্দিষ্ট কীগুচ্ছের মান যোগ করা হবে অথবা যদি সেই কীগুচ্ছ আগে থেকেই থাকে, তবে পুরানো মানটি নতুন মান দিয়ে আপডেট করা হবে।
উদাহরণ:
iex> map = %{a: 1, b: 2}
%{a: 1, b: 2}
iex> map = Map.put(map, :c, 3)
%{a: 1, b: 2, c: 3}
iex> map = Map.put(map, :b, 5)
%{a: 1, b: 5, c: 3}এখানে, Map.put(map, :c, 3) কীগুচ্ছ :c যোগ করেছে এবং Map.put(map, :b, 5) কীগুচ্ছ :b এর মান পরিবর্তন করেছে।
2. update/3 (Updating the Value of an Existing Key)
update অপারেটরটি একটি নির্দিষ্ট কীগুচ্ছের মানকে ফাংশন ব্যবহার করে আপডেট করে। এটি একটি ফাংশন নেয় যা পুরানো মানের উপর ভিত্তি করে নতুন মান তৈরি করে।
সিনট্যাক্স:
Map.update(map, key, default_value, fn current_value -> updated_value end)- ব্যবহার:
- যদি কীগুচ্ছটি উল্লেখিত না থাকে, তবে এটি ডিফল্ট মান (
default_value) ব্যবহার করবে। - যদি কীগুচ্ছটি থাকে, তবে এটি ফাংশন দিয়ে তার পুরানো মান আপডেট করবে।
- যদি কীগুচ্ছটি উল্লেখিত না থাকে, তবে এটি ডিফল্ট মান (
উদাহরণ:
iex> map = %{a: 1, b: 2, c: 3}
%{a: 1, b: 2, c: 3}
iex> Map.update(map, :b, 0, fn value -> value + 1 end)
%{a: 1, b: 3, c: 3}
iex> Map.update(map, :d, 0, fn value -> value + 1 end)
%{a: 1, b: 2, c: 3, d: 1}এখানে:
Map.update(map, :b, 0, fn value -> value + 1 end)কীগুচ্ছ:bএর মানকে ১ বাড়িয়েছে।Map.update(map, :d, 0, fn value -> value + 1 end)কীগুচ্ছ:dযা ছিল না, তাকে ০ দিয়ে শুরু করে এবং পরবর্তীতে তার মানকে ১ করে।
3. fetch/2 (Fetching the Value of a Key)
fetch অপারেটরটি একটি কীগুচ্ছের মান অ্যাক্সেস করতে ব্যবহৃত হয়। এটি একটি {:ok, value} টিউপল রিটার্ন করে যদি কীগুচ্ছটি পাওয়া যায়, এবং যদি কীগুচ্ছটি না থাকে তবে :error রিটার্ন করে।
সিনট্যাক্স:
Map.fetch(map, key)- ব্যবহার:
এটি কীগুচ্ছের মানটি খুঁজে বের করবে এবং একটি টিউপল রিটার্ন করবে, যার মধ্যে একদিকে:okএবং অন্যদিকে মান থাকবে যদি কীগুচ্ছটি পাওয়া যায়, অথবা:errorযদি কীগুচ্ছটি না থাকে।
উদাহরণ:
iex> map = %{a: 1, b: 2, c: 3}
%{a: 1, b: 2, c: 3}
iex> Map.fetch(map, :b)
{:ok, 2}
iex> Map.fetch(map, :d)
:errorএখানে:
Map.fetch(map, :b)কীগুচ্ছ:bএর মান2রিটার্ন করেছে।Map.fetch(map, :d)কীগুচ্ছ:dনা থাকার কারণে:errorরিটার্ন করেছে।
4. Other Useful Map Operations
Elixir তে Map এর সাথে আরও কিছু দরকারী অপারেশন রয়েছে:
a. get/2 (Fetch value by key)
get অপারেটরটি fetch এর মতো কাজ করে, তবে এটি টিউপল রিটার্ন করার পরিবর্তে সরাসরি nil রিটার্ন করে যদি কীগুচ্ছটি না থাকে।
iex> Map.get(map, :a)
1
iex> Map.get(map, :d)
nilb. delete/2 (Deleting a key-value pair)
delete অপারেটরটি একটি কীগুচ্ছ মুছে ফেলে।
iex> map = %{a: 1, b: 2, c: 3}
%{a: 1, b: 2, c: 3}
iex> map = Map.delete(map, :b)
%{a: 1, c: 3}এখানে, Map.delete(map, :b) কীগুচ্ছ :b কে মুছে ফেলেছে।
c. merge/2 (Merging two maps)
merge অপারেটরটি দুটি ম্যাপকে একত্রিত করে।
iex> map1 = %{a: 1, b: 2}
iex> map2 = %{c: 3, d: 4}
iex> Map.merge(map1, map2)
%{a: 1, b: 2, c: 3, d: 4}এখানে, দুটি ম্যাপ একত্রিত করা হয়েছে এবং নতুন একটি ম্যাপ তৈরি হয়েছে।
সারসংক্ষেপ
put/3: একটি নতুন কীগুচ্ছ (key-value pair) যোগ করতে বা পূর্বের মান আপডেট করতে ব্যবহৃত হয়।update/3: একটি কীগুচ্ছের মান ফাংশন ব্যবহার করে আপডেট করতে ব্যবহৃত হয়।fetch/2: একটি কীগুচ্ছের মান অ্যাক্সেস করতে ব্যবহৃত হয়, যদি কীগুচ্ছটি থাকে তাহলে{:ok, value}রিটার্ন হয়, আর না থাকলে:errorরিটার্ন হয়।
এছাড়া, Map এর মধ্যে আরও অনেক অপারেশন রয়েছে, যেমন get/2, delete/2, merge/2 যা ম্যানিপুলেট করতে সাহায্য করে। Elixir তে Maps অনেক গুরুত্বপূর্ণ ডেটা স্ট্রাকচার হিসেবে কাজ করে এবং তার সাথে বিভিন্ন অপারেশনকে দক্ষভাবে পরিচালনা করা যায়।
Read more