Named এবং Anonymous Functions এর ব্যবহার

Functions in Elixir (ফাংশনস) - এলিক্সির (Elixir) - Computer Programming

357

Elixir: Named এবং Anonymous Functions

ElixirNamed Functions এবং Anonymous Functions দুটি গুরুত্বপূর্ণ কনসেপ্ট যা কোডের কার্যকারিতা এবং নমনীয়তা বৃদ্ধি করে। এই ফাংশনগুলো ফাংশনাল প্রোগ্রামিং ভাষার অন্যতম বৈশিষ্ট্য এবং এগুলোর মধ্যে পার্থক্য এবং ব্যবহারিক দিক থেকে কিছু গুরুত্বপূর্ণ মৌলিক বিষয় রয়েছে।


1. Named Functions

Named Functions হল এমন ফাংশন যা একটি নির্দিষ্ট নাম দিয়ে ঘোষণা করা হয় এবং পরে সেই নাম ব্যবহার করে ফাংশনটি কল করা হয়। Named functions সাধারণত modules (মডিউল) এর মধ্যে থাকে এবং এগুলি কোডের পুনঃব্যবহারযোগ্যতা এবং সংগঠনের জন্য ব্যবহার করা হয়।

Named Function এর সিনট্যাক্স:

  • ডিফাইনেশন:

    defmodule MyModule do
      def greet(name) do
        IO.puts("Hello, #{name}!")
      end
    end
  • ফাংশন কল:

    MyModule.greet("Alice")

এখানে, greet নামক একটি ফাংশন MyModule মডিউলের মধ্যে ডিফাইন করা হয়েছে, এবং এটি Alice ইনপুট প্যারামিটার সহ কল করা হয়েছে।

Named Functions এর কিছু বৈশিষ্ট্য:

  1. ফাংশন নেম স্পেসিফিক: মডিউলের মধ্যে নাম দিয়ে ফাংশন কল করা হয়।
  2. পুনঃব্যবহারযোগ্য: একাধিক জায়গায় একই ফাংশন ব্যবহার করা যায়।
  3. সহজ ট্র্যাকিং: ফাংশনগুলোর নাম থাকে, ফলে কোড পড়া এবং ডিবাগিং সহজ হয়।
  4. প্যাটার্ন ম্যাচিং: Elixir তে named functions প্যাটার্ন ম্যাচিং সমর্থন করে, যার মাধ্যমে একাধিক ইনপুট প্যারামিটার দ্বারা ফাংশন ডিফাইন করা যায়।

উদাহরণ:

defmodule Math do
  def add(a, b) do
    a + b
  end
end

IO.puts(Math.add(5, 3))  # আউটপুট হবে 8

2. Anonymous Functions

Anonymous Functions (অজ্ঞাত ফাংশন) এমন ফাংশন যা কোনো নাম ছাড়াই ডিফাইন করা হয়। এগুলি সাধারণত একক ব্যবহারের জন্য হয় এবং কখনো কখনো ভেরিয়েবলের মধ্যে সংরক্ষিত হয়। এগুলি fn কিওয়ার্ড দিয়ে ডিফাইন করা হয় এবং সাধারণত first-class citizens হিসেবে ব্যবহৃত হয়।

Anonymous Function এর সিনট্যাক্স:

  • ডিফাইনেশন:

    add = fn a, b -> a + b end
  • ফাংশন কল:

    IO.puts(add.(5, 3))  # আউটপুট হবে 8

এখানে, add একটি অজ্ঞাত ফাংশন হিসেবে ডিফাইন করা হয়েছে, এবং তা দুইটি ইনপুট প্যারামিটার নিয়ে গুণফল প্রদান করছে। ফাংশনটিকে add.(5, 3) এর মাধ্যমে কল করা হয়েছে।

Anonymous Functions এর কিছু বৈশিষ্ট্য:

  1. ফাংশনের নাম নেই: এটি কোনো নামের অধীনে থাকে না, তবে সাধারণত একটি ভেরিয়েবলে সংরক্ষণ করা হয়।
  2. এককালীন ব্যবহার: এটি সাধারণত এককালীন ব্যবহার হয় অথবা একটি ভেরিয়েবলে অ্যাসাইন করা হয়।
  3. লাভজনক প্যারামিটার: এক্সপ্রেশন বা ফাংশনগুলো অন্য ফাংশনের আর্গুমেন্ট হিসেবে পাস করা যায়।
  4. শর্টকাট সিমেন্ট: Elixir তে & অপারেটর ব্যবহার করে অজ্ঞাত ফাংশনগুলোকে আরো সংক্ষিপ্তভাবে লেখা যায়।

Anonymous Functions এর উদাহরণ:

add = fn a, b -> a + b end
subtract = fn a, b -> a - b end

IO.puts(add.(5, 3))      # আউটপুট হবে 8
IO.puts(subtract.(5, 3)) # আউটপুট হবে 2

এখানে, দুটি অজ্ঞাত ফাংশন add এবং subtract ডিফাইন করা হয়েছে এবং সেগুলি পরবর্তীতে কল করা হয়েছে।

Anonymous Function এর সংক্ষিপ্ত ব্যবহার (Shorthand):

Elixir তে & অপারেটর ব্যবহার করে আপনি অজ্ঞাত ফাংশনগুলো আরও সংক্ষিপ্তভাবে লিখতে পারেন। এটি ফাংশন সংজ্ঞায় ফাংশনের আর্গুমেন্টগুলোর জন্য স্বয়ংক্রিয়ভাবে ইনডেক্স প্রদান করে।

add = &(&1 + &2)  # &1 এবং &2 আর্গুমেন্ট হিসেবে কাজ করছে
IO.puts(add.(5, 3))  # আউটপুট হবে 8

এখানে, &(&1 + &2) শর্টকাট ব্যবহার করে দুটি আর্গুমেন্টের যোগফল বের করা হয়েছে।


Named Functions এবং Anonymous Functions এর মধ্যে পার্থক্য

বৈশিষ্ট্যNamed FunctionsAnonymous Functions
নামএকটি নির্দিষ্ট নাম থাকে।কোনো নাম থাকে না।
ব্যবহারকোড পুনঃব্যবহারের জন্য এবং মডিউলের মধ্যে থাকে।এককালীন ব্যবহারের জন্য, ভেরিয়েবলে সংরক্ষিত হয়।
প্যাটার্ন ম্যাচিংপ্যাটার্ন ম্যাচিং সমর্থন করে।প্যাটার্ন ম্যাচিং সাধারণত সমর্থন করে না।
সংগঠনসাধারণত মডিউলের মধ্যে থাকে।সাধারণত একক লাইনে সংজ্ঞায়িত হয়।
ফাংশন কলMyModule.function_name(arg)function.(arg)

সারসংক্ষেপ

  • Named Functions: এগুলি ফাংশনের নাম দিয়ে ডিফাইন করা হয় এবং কোডের পুনঃব্যবহারযোগ্যতা, মডুলারাইজেশন এবং প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয়।
  • Anonymous Functions: এগুলি কোনো নাম ছাড়াই ব্যবহৃত হয় এবং সাধারণত এককালীন ব্যবহার অথবা ভেরিয়েবলে সংরক্ষিত হয়। এগুলি কোডে আরও নমনীয়তা এনে দেয় এবং অন্যান্য ফাংশনে আর্গুমেন্ট হিসেবে পাস করা যায়।

এভাবে Elixir তে Named Functions এবং Anonymous Functions এর ব্যবহার কোডিংয়ের উন্নত কৌশল ও কার্যকারিতা প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...