Looping এর জন্য for এবং Enum এর ব্যবহার in Elixir
Elixir তে লুপিং করতে সাধারণত for কমান্ড এবং Enum মডিউল ব্যবহৃত হয়। Elixir একটি ফাংশনাল ভাষা, তাই লুপিং এবং ইটারেশন সাধারণভাবে রেকারশন (recursion) এর মাধ্যমে হয়, কিন্তু for এবং Enum মডিউল ব্যবহার করেও আপনি সহজে লুপিং করতে পারেন।
১. for কমান্ড ব্যবহার
Elixir তে for কমান্ড একটি comprehension তৈরি করতে ব্যবহৃত হয় যা লিস্টের উপাদানগুলোর উপর লুপ চালানোর জন্য সুবিধাজনক। এটি একটি প্রকারের list comprehension হিসেবে কাজ করে এবং অনেক ধরণের অ্যাকশন করতে পারে, যেমন ডেটা ফিল্টার, মান ট্রান্সফর্মেশন ইত্যাদি।
for এর মৌলিক ব্যবহার:
# সাধারণ `for` লুপ উদাহরণ
for i <- 1..5 do
IO.puts(i)
endএখানে for i <- 1..5 নির্দেশ করে যে ১ থেকে ৫ পর্যন্ত প্রতিটি সংখ্যার জন্য লুপ চলবে এবং IO.puts(i) প্রতিটি সংখ্যার জন্য আউটপুট হবে। এটি ১, ২, ৩, ৪, ৫ আউটপুট করবে।
আরেকটি উদাহরণ - লিস্টে মান ব্যবহার:
# লিস্টের উপাদান গুলি প্রদর্শন করা
numbers = [1, 2, 3, 4, 5]
for n <- numbers do
IO.puts(n * 2)
endএখানে লিস্ট numbers এর প্রতিটি উপাদানকে গুন করা হচ্ছে ২ দিয়ে, এবং আউটপুট হবে ২, ৪, ৬, ৮, ১০।
Conditional Filtering in for:
আপনি for কম্প্রিহেনশনে কন্ডিশনও যোগ করতে পারেন। যেমন:
# শুধুমাত্র even numbers প্রিন্ট করা
for i <- 1..10, rem(i, 2) == 0 do
IO.puts(i)
endএখানে rem(i, 2) == 0 কন্ডিশনটি শুধু even numbers ফিল্টার করবে, ফলে আউটপুট হবে 2, 4, 6, 8, 10।
২. Enum মডিউল ব্যবহার
Enum মডিউল হল Elixir তে সবচেয়ে ব্যবহৃত মডিউল, যা লিস্ট এবং অন্যান্য কালেকশন (যেমন ম্যাপ, সেট) এর উপর কাজ করার জন্য বিভিন্ন ফাংশন প্রদান করে। Enum মডিউলের ফাংশনগুলি সাধারণত iterating (ইটারেটিং), filtering, এবং transforming ডেটার জন্য ব্যবহৃত হয়।
Enum.each/2 ব্যবহার:
এটি একটি প্রক্রিয়া যা লিস্ট বা কালেকশনের প্রতিটি উপাদানের উপর একটি ফাংশন প্রয়োগ করে।
numbers = [1, 2, 3, 4, 5]
Enum.each(numbers, fn n -> IO.puts(n) end)এখানে Enum.each ফাংশনটি numbers লিস্টের প্রতিটি উপাদান n এর উপর IO.puts প্রয়োগ করে, এবং আউটপুট হবে ১, ২, ৩, ৪, ৫।
Enum.map/2 ব্যবহার:
এটি একটি ট্রান্সফর্মেশন ফাংশন যা একটি নতুন লিস্ট তৈরি করে, যেখানে প্রতিটি উপাদান একটি নির্দিষ্ট ফাংশনের মাধ্যমে পরিবর্তিত হয়।
numbers = [1, 2, 3, 4, 5]
doubled_numbers = Enum.map(numbers, fn n -> n * 2 end)
IO.inspect(doubled_numbers) # আউটপুট: [2, 4, 6, 8, 10]এখানে, Enum.map লিস্টের প্রতিটি উপাদানকে ২ দিয়ে গুণ করে একটি নতুন লিস্ট তৈরি করেছে, যার আউটপুট হবে **[2, 4, 6, 8, 10]**।
Enum.filter/2 ব্যবহার:
এটি একটি ফিল্টারিং ফাংশন যা একটি নতুন লিস্ট তৈরি করে, যেখানে কেবলমাত্র সেই উপাদানগুলি থাকে যা কন্ডিশন মেনে চলে।
numbers = [1, 2, 3, 4, 5]
even_numbers = Enum.filter(numbers, fn n -> rem(n, 2) == 0 end)
IO.inspect(even_numbers) # আউটপুট: [2, 4]এখানে, Enum.filter শুধুমাত্র even numbers ফিল্টার করবে এবং আউটপুট হবে **[2, 4]**।
Enum.reduce/3 ব্যবহার:
Enum.reduce একটি অ্যাগ্রিগেটিং ফাংশন যা একটি লিস্ট বা কালেকশনের উপর এক্সিকিউট হয় এবং একটি একক মান রিটার্ন করে।
numbers = [1, 2, 3, 4, 5]
sum = Enum.reduce(numbers, 0, fn n, acc -> n + acc end)
IO.puts(sum) # আউটপুট: 15এখানে, Enum.reduce লিস্টের উপাদানগুলোকে যোগ করে তাদের সমষ্টি বের করছে। শুরু থেকে শুরু করে প্রতিটি মান এক্সিকিউট হয় এবং acc (অ্যাকিউমুলেটর) এর সাথে যোগ হয়। আউটপুট হবে 15।
৩. Enum এর অন্যান্য কার্যকরী ফাংশন
| ফাংশন | বর্ণনা | উদাহরণ |
|---|---|---|
Enum.all?/2 | সমস্ত উপাদান যদি একটি শর্ত মেনে চলে, তাহলে true ফেরত দেয় | Enum.all?([1, 2, 3], fn x -> x > 0 end) |
Enum.any?/2 | কোনো উপাদান যদি শর্ত মেনে চলে, তাহলে true ফেরত দেয় | Enum.any?([1, 2, 3], fn x -> x > 2 end) |
Enum.count/1 | লিস্টের উপাদানের সংখ্যা গণনা করে | Enum.count([1, 2, 3]) |
Enum.sort/1 | লিস্ট সজ্জিত করে (sort) | Enum.sort([3, 1, 2]) |
Enum.find/2 | প্রথম মান যা শর্ত মেনে চলে, তা ফেরত দেয় | Enum.find([1, 2, 3], fn x -> x > 2 end) |
সারসংক্ষেপ
for এবং Enum Elixir তে লুপিং এবং ইটারেশন করার জন্য বেশ শক্তিশালী এবং কার্যকরী উপায় প্রদান করে। for কমান্ড একধরণের কম্প্রিহেনশন তৈরি করে যা লিস্টের উপাদানগুলোর উপর সহজে কাজ করতে সাহায্য করে, এবং Enum মডিউলটি বিভিন্ন ইটারেটিং, ফিল্টারিং, এবং ট্রান্সফর্মিং অপারেশন সম্পাদন করতে ব্যবহৃত হয়। Elixir তে for এবং Enum ব্যবহার করে কোড আরও সোজা এবং পরিষ্কার করা সম্ভব, যা ফাংশনাল প্রোগ্রামিংয়ের মূল ধারণার সাথে মানানসই।
Read more