Elixir এর মৌলিক সিনট্যাক্স এবং স্ট্রাকচার
Elixir একটি ফাংশনাল প্রোগ্রামিং ভাষা, যার সিনট্যাক্স মূলত সহজ এবং পরিষ্কার। এর মধ্যে কিছু মৌলিক উপাদান রয়েছে, যেমন ফাংশন ঘোষণা, কন্ডিশনাল স্টেটমেন্ট, ডেটা টাইপ, লিস্ট, টুপল, ম্যাপ ইত্যাদি, যা Elixir কোড লেখা এবং পড়তে সহজ করে তোলে। নিচে Elixir এর মৌলিক সিনট্যাক্স এবং স্ট্রাকচার নিয়ে বিস্তারিত আলোচনা করা হলো।
১. কনসোল ইনপুট/আউটপুট (IO)
Elixir তে কনসোল ইনপুট ও আউটপুট করার জন্য IO মডিউল ব্যবহার করা হয়।
টেক্সট আউটপুট:
IO.puts("Hello, Elixir!")পড়ার জন্য ইনপুট:
name = IO.gets("Enter your name: ") IO.puts("Hello, #{name}!")
এটি ইউজারের ইনপুট নেয় এবং তারপর সেটি আউটপুট হিসাবে প্রদর্শন করে।
২. ডেটা টাইপ
Elixir বেশ কিছু মৌলিক ডেটা টাইপ সাপোর্ট করে, যেমন: Integers, Floats, Strings, Atoms, Booleans, Tuples, Lists, এবং Maps।
Integers এবং Floats:
a = 42 # Integer b = 3.14 # FloatStrings:
greeting = "Hello, Elixir!"Atoms:
:ok :errorBooleans:
true falseTuples (অর্ডারড ডেটার সংগ্রহ):
tuple = {1, 2, 3}Lists:
list = [1, 2, 3, 4]Maps (অর্ডারড কীগুলির সাথে ডেটার সংগ্রহ):
map = %{name: "Alice", age: 30}
৩. ফাংশন ডিফাইনেশন
Elixir তে ফাংশন ডিফাইন করা হয় def কিওয়ার্ড দিয়ে, এবং do/end ব্লকের মধ্যে কোড থাকে।
এটা একটি সাধারণ ফাংশন:
def greet(name) do IO.puts("Hello, #{name}!") endফাংশন কল করা:
greet("Alice")ফাংশন অবলোপন: Elixir ফাংশনটি একটি অ্যারগুমেন্টের ভিত্তিতে আলাদা আচরণ করতে পারে:
def add(a, b) do a + b endফাংশন প্যাটার্ন ম্যাচিং:
Elixir এ প্যাটার্ন ম্যাচিং ফাংশনের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য। এটি ফাংশন কলের সময় ইনপুটের সাথে মেলানো হয়:def greet(:morning) do IO.puts("Good Morning!") end def greet(:evening) do IO.puts("Good Evening!") end greet(:morning) # Output: Good Morning! greet(:evening) # Output: Good Evening!
৪. কন্ডিশনাল স্টেটমেন্ট
Elixir এ if-else, cond, এবং case ব্যবহার করে কন্ডিশনাল লজিক তৈরি করা যায়।
if-else:
x = 5 if x > 10 do IO.puts("Greater than 10") else IO.puts("Less than or equal to 10") endcond: একাধিক শর্তের জন্য
x = 15 cond do x < 10 -> IO.puts("x is less than 10") x > 20 -> IO.puts("x is greater than 20") true -> IO.puts("x is between 10 and 20") endcase: একাধিক পরিস্থিতি পরীক্ষা করার জন্য
value = :error case value do :ok -> IO.puts("Success") :error -> IO.puts("Failure") _ -> IO.puts("Unknown status") end
৫. লুপ এবং রিকর্শন
Elixir এ সাধারণত রিকর্শন (Recursion) ব্যবহার করা হয়, কারণ এটি ফাংশনাল ভাষা। তবে Elixir এ কিছুটা সাধারণ লুপও আছে, যেমন Enum.each বা Stream।
রিকর্শন:
def print_numbers(0), do: IO.puts("Done!") def print_numbers(n) do IO.puts(n) print_numbers(n - 1) endকল করার সময়:
print_numbers(5)লুপ (Enum.each):
Enum.each([1, 2, 3, 4], fn x -> IO.puts(x) end)
৬. মডিউল ডিফাইনেশন
Elixir এ কোড সংগঠিত করতে মডিউল ব্যবহার করা হয়। মডিউলগুলি ফাংশন এবং অন্যান্য কোড একত্রে রাখে।
মডিউল ডিফাইন করা:
defmodule MyModule do def greet(name) do IO.puts("Hello, #{name}!") end endমডিউল কল করা:
MyModule.greet("Alice")
৭. অপারেটর এবং কন্ট্রোল স্ট্রাকচার
Elixir এ কিছু সাধারণ অপারেটর রয়েছে যেমন +, -, *, /, ++ (লিস্ট কনক্যাটেনেশন) এবং -- (লিস্ট থেকে উপাদান সরানো)।
অপারেটর উদাহরণ:
sum = 5 + 10 # 15 product = 3 * 4 # 12লিস্ট কনক্যাটেনেশন:
list1 = [1, 2, 3] list2 = [4, 5, 6] combined = list1 ++ list2 # [1, 2, 3, 4, 5, 6]লিস্ট থেকে উপাদান সরানো:
list = [1, 2, 3] list = list -- [2] # [1, 3]
সারসংক্ষেপ
Elixir এর মৌলিক সিনট্যাক্স ও স্ট্রাকচার ফাংশনাল প্রোগ্রামিং ধারণার উপর ভিত্তি করে তৈরি। এর মধ্যে রয়েছে ফাংশন ঘোষণা, কন্ডিশনাল স্টেটমেন্ট, ডেটা টাইপ, রিকর্শন, মডিউল ব্যবস্থাপনা, এবং অপারেটর ব্যবহারের সহজ নিয়ম। Elixir তে ফাংশনাল প্রোগ্রামিংয়ের শক্তিশালী সুবিধাগুলো উপভোগ করা যায়, যেমন প্যাটার্ন ম্যাচিং, রিকর্শন, এবং ডেটা অপরিবর্তনীয়তা (immutability), যা কোডের স্থিতিস্থাপকতা এবং নিরাপত্তা বাড়ায়।
Read more