Lists এবং Tuples এর সাথে Iteration এবং Manipulation in Elixir
Elixir একটি ফাংশনাল প্রোগ্রামিং ভাষা, এবং এখানে Lists এবং Tuples ডেটা স্ট্রাকচারগুলো খুবই গুরুত্বপূর্ণ। তাদের সাথে iteration এবং manipulation করার জন্য Elixir বেশ কিছু শক্তিশালী ফিচার এবং ফাংশন প্রদান করে। চলুন দেখি কীভাবে Lists এবং Tuples এর সাথে iteration এবং manipulation করা যায়।
Lists in Elixir
List হল Elixir তে একটি ডেটা স্ট্রাকচার যা একাধিক উপাদান (elements) ধারণ করে। এটি একটি লিনিয়ার ডেটা স্ট্রাকচার এবং একটি সিকোয়েন্স যা একটি নির্দিষ্ট অর্ডারে উপাদানগুলো সংরক্ষণ করে। Lists বেশ প্রভাবশালী ডেটা টাইপ, যেহেতু তাদের সাথে manipulation করা খুবই সহজ।
Iteration over Lists
Elixir তে List এর উপর iteration করার জন্য বেশ কিছু বিল্ট-ইন ফাংশন রয়েছে। এগুলোর মধ্যে সবচেয়ে জনপ্রিয় হল Enum.each/2, Enum.map/2, Enum.filter/2, **Enum.reduce/3**।
Examples of Iterating over Lists:
Enum.each/2: এটি একটি ফাংশন ব্যবহার করে লিস্টের প্রতিটি উপাদানকে প্রক্রিয়া করে।
list = [1, 2, 3, 4, 5]
Enum.each(list, fn x -> IO.puts(x) end)
# Output:
# 1
# 2
# 3
# 4
# 5Enum.map/2: এটি একটি ফাংশন ব্যবহার করে লিস্টের প্রতিটি উপাদান ট্রান্সফর্ম করে নতুন লিস্ট তৈরি করে।
list = [1, 2, 3, 4, 5]
new_list = Enum.map(list, fn x -> x * 2 end)
IO.inspect(new_list) # Output: [2, 4, 6, 8, 10]Enum.filter/2: এটি একটি ফাংশন ব্যবহার করে লিস্টের এমন উপাদানগুলো বেছে নেয় যা একটি নির্দিষ্ট শর্ত পূর্ণ করে।
list = [1, 2, 3, 4, 5]
filtered_list = Enum.filter(list, fn x -> rem(x, 2) == 0 end)
IO.inspect(filtered_list) # Output: [2, 4]Enum.reduce/3: এটি লিস্টের উপাদানগুলির উপর একটি একক মূল্য তৈরি করতে ব্যবহৃত হয়।
list = [1, 2, 3, 4, 5]
sum = Enum.reduce(list, 0, fn x, acc -> x + acc end)
IO.puts(sum) # Output: 15Manipulating Lists
List.append/2: দুটি লিস্ট একত্রিত করা।
list1 = [1, 2, 3]
list2 = [4, 5, 6]
merged_list = List.append(list1, list2)
IO.inspect(merged_list) # Output: [1, 2, 3, 4, 5, 6]List.delete/2: লিস্ট থেকে একটি উপাদান মুছে ফেলা।
list = [1, 2, 3, 4, 5]
new_list = List.delete(list, 3)
IO.inspect(new_list) # Output: [1, 2, 4, 5]List.insert_at/3: লিস্টে একটি নির্দিষ্ট অবস্থানে একটি উপাদান ইনসার্ট করা।
list = [1, 2, 3, 4]
new_list = List.insert_at(list, 2, 99)
IO.inspect(new_list) # Output: [1, 2, 99, 3, 4]Tuples in Elixir
Tuple Elixir তে এমন একটি ডেটা স্ট্রাকচার যা একাধিক উপাদান ধারণ করে, তবে এটি একটি স্থির ডেটা স্ট্রাকচার এবং এর আকার পরিবর্তন করা সম্ভব নয়। সাধারণত, Tuples ব্যবহার করা হয় এমন ডেটার জন্য যা পরিবর্তনযোগ্য নয় এবং প্রক্রিয়া করতে কিছু সঠিক কাঠামো প্রয়োজন।
Iteration over Tuples
Tuples এর মধ্যে iteration করার জন্য Elixir তে কোন সরাসরি Enum ফাংশন নেই, কারণ Tuples এর আকার পরিবর্তন করা সম্ভব নয়। তবে আপনি Tuple কে List তে কনভার্ট করে iteration করতে পারেন।
tuple = {:ok, 1, 2, 3}
# Convert tuple to list and iterate
tuple
|> Tuple.to_list()
|> Enum.each(fn x -> IO.puts(x) end)Manipulating Tuples
Tuples তে সরাসরি manipulation করা সম্ভব নয়, কিন্তু আপনি টিউপলকে List এ কনভার্ট করে সেই List এর সাথে কাজ করতে পারেন। তবে, আপনি টিউপল তৈরি বা নতুন উপাদান যুক্ত করতে পারেন।
Tuple.append/2: একটি নতুন উপাদান টিউপলে অ্যাপেন্ড করা।
tuple = {:ok, 1, 2}
new_tuple = Tuple.append(tuple, 3)
IO.inspect(new_tuple) # Output: {:ok, 1, 2, 3}Tuple.delete_at/2: টিউপল থেকে একটি উপাদান মুছে ফেলা।
tuple = {:ok, 1, 2, 3}
new_tuple = Tuple.delete_at(tuple, 2)
IO.inspect(new_tuple) # Output: {:ok, 1, 3}Tuple.insert_at/3: একটি নির্দিষ্ট ইনডেক্সে টিউপলে নতুন উপাদান ইনসার্ট করা।
tuple = {:ok, 1, 2}
new_tuple = Tuple.insert_at(tuple, 1, 99)
IO.inspect(new_tuple) # Output: {:ok, 99, 1, 2}Summary
| ডেটা স্ট্রাকচার | Iteration Function | Manipulation Function |
|---|---|---|
| List | Enum.each/2, Enum.map/2, Enum.filter/2, Enum.reduce/3 | List.append/2, List.delete/2, List.insert_at/3 |
| Tuple | Tuple.to_list/1 + Enum.each/2 | Tuple.append/2, Tuple.delete_at/2, Tuple.insert_at/3 |
Conclusion
- Lists Elixir তে খুবই গুরুত্বপূর্ণ ডেটা স্ট্রাকচার, এবং এগুলোর উপর iteration এবং manipulation করার জন্য
Enumফাংশনগুলি ব্যবহৃত হয়। - Tuples সাধারনত অবিচ্ছেদ্য (immutable) ডেটার জন্য ব্যবহৃত হয় এবং এগুলোর সাথে কাজ করার জন্য বেশ কিছু টিউপল ফাংশন প্রদান করা হয়। তবে, iteration করার জন্য টিউপলকে List তে কনভার্ট করতে হয়।
Read more