Erlang-এ মডিউল ডিক্লারেশন এবং মডিউল ইমপোর্ট করা
Erlang-এ মডিউল ডিক্লারেশন এবং ইমপোর্ট একটি গুরুত্বপূর্ণ ধারণা, যা কোডের পুনরব্যবহারযোগ্যতা এবং পরিষ্কার কাঠামো তৈরি করতে সাহায্য করে। Erlang-এ একটি মডিউল সাধারণত একটি ফাইলের মাধ্যমে ডিক্লেয়ার করা হয় এবং সেই মডিউলটি অন্যান্য মডিউলে ব্যবহার করার জন্য ইমপোর্ট করা হয়।
1. মডিউল ডিক্লারেশন (Module Declaration)
Erlang মডিউলকে ডিক্লেয়ার করার জন্য -module ডিরেকটিভ ব্যবহার করা হয়। মডিউল একটি ফাইলের মধ্যে থাকে এবং সেই ফাইলের নাম মডিউলের নামের সাথে মেলানো থাকে। সাধারণত, Erlang মডিউলগুলির নাম ছোট হাতের অক্ষরে রাখা হয় এবং .erl এক্সটেনশন থাকে।
মডিউল ডিক্লারেশনের সিনট্যাক্স:
-module(module_name).এখানে, module_name হলো মডিউলের নাম, যা সাধারণত lowercase-এ থাকে।
উদাহরণ:
-module(math_operations).
-export([add/2, multiply/2]).
add(X, Y) ->
X + Y.
multiply(X, Y) ->
X * Y.এখানে:
-module(math_operations).: মডিউলটিmath_operationsনামে ডিক্লেয়ার করা হয়েছে।-export([add/2, multiply/2]).: এখানে ফাংশনগুলোadd/2এবংmultiply/2পাবলিকলি এক্সপোর্ট করা হয়েছে, যা অন্য মডিউল থেকে ব্যবহার করা যাবে।
2. মডিউল ইমপোর্ট করা (Module Importing)
Erlang-এ মডিউল ইমপোর্ট করার ধারণা import ডিরেকটিভের মাধ্যমে হয় না, বরং অন্য মডিউলের ফাংশন ব্যবহার করতে -module এবং -export ডিরেকটিভ ব্যবহার করা হয়। আপনি অন্য মডিউল থেকে ফাংশন কল করার জন্য Module:Function/Arity সঠিক সিনট্যাক্স ব্যবহার করতে পারেন।
মডিউল ইমপোর্টের উদাহরণ:
ধরা যাক, আমাদের একটি মডিউল math_operations আছে এবং আমরা সেই মডিউলের add/2 এবং multiply/2 ফাংশন অন্য মডিউল থেকে ব্যবহার করতে চাই।
math_operations.erl:
-module(math_operations).
-export([add/2, multiply/2]).
add(X, Y) ->
X + Y.
multiply(X, Y) ->
X * Y.এখন, আমরা যদি এই মডিউলটির add/2 এবং multiply/2 ফাংশন ব্যবহার করতে চাই, তাহলে আমরা সেই ফাংশনগুলো কল করতে পারি:
calculator.erl:
-module(calculator).
-export([calculate/2]).
calculate(X, Y) ->
Sum = math_operations:add(X, Y),
Product = math_operations:multiply(X, Y),
{Sum, Product}.এখানে:
math_operations:add(X, Y)এবংmath_operations:multiply(X, Y)ব্যবহার করা হয়েছে।- এই ফাংশনগুলো
math_operationsমডিউলেরadd/2এবংmultiply/2ফাংশন থেকে কল করা হচ্ছে।
এটি ব্যবহার করতে:
1> c(math_operations).
{ok,math_operations}
2> c(calculator).
{ok,calculator}
3> calculator:calculate(3, 5).
{8,15}এখানে, আমরা calculator:calculate/2 ফাংশন কল করেছি, যা math_operations:add/2 এবং math_operations:multiply/2 ফাংশন ব্যবহার করে যোগফল এবং গুণফল রিটার্ন করছে।
3. মডিউল থেকে ফাংশন এক্সপোর্ট করা (Exporting Functions from Modules)
যেকোনো মডিউল থেকে ফাংশন ব্যবহারের জন্য -export ডিরেকটিভ ব্যবহার করতে হয়। এটি মডিউলের ফাংশনগুলো অন্য মডিউল থেকে অ্যাক্সেস করার জন্য এক্সপোর্ট করে। ফাংশন এক্সপোর্ট করার সময় তার নাম এবং আর্গুমেন্টের সংখ্যা (অ্যারিটি) উল্লেখ করতে হয়।
এক্সপোর্টের সিনট্যাক্স:
-export([function_name/arity]).উদাহরণ:
-module(my_module).
-export([hello/0, add/2]).
hello() ->
io:format("Hello, World!~n").
add(X, Y) ->
X + Y.এখানে:
hello/0:helloফাংশনটি কোন আর্গুমেন্ট নেয় না, তাই তার অ্যারিটি 0।add/2:addফাংশন দুটি আর্গুমেন্ট নেয়, তাই তার অ্যারিটি 2।
এখন, অন্য মডিউল থেকে এই ফাংশনগুলো ব্যবহার করা যাবে:
-module(test).
-export([test_hello/0, test_add/2]).
test_hello() ->
my_module:hello().
test_add(X, Y) ->
my_module:add(X, Y).4. মডিউল ডিক্লারেশন এবং ইমপোর্টের গুরুত্বপূর্ণ টিপস
- মডিউলের নাম এবং ফাইল নাম: Erlang মডিউলের নাম এবং ফাইলের নাম অবশ্যই একই হতে হবে। উদাহরণস্বরূপ,
math_operations.erlফাইলের নাম যদি হয়, তবে মডিউলের নামওmath_operationsহতে হবে। - অ্যারের নামকরণ: ফাংশনের নাম এবং আর্গুমেন্টের সংখ্যা arity
/দ্বারা পৃথক করা হয়। যেমনadd/2মানেaddফাংশনটি দুটি আর্গুমেন্ট নেয়। - ফাংশন এক্সপোর্ট করা: যদি আপনি কোনো মডিউলের ফাংশন অন্য মডিউল থেকে ব্যবহার করতে চান, তবে আপনাকে সেগুলি
-exportডিরেকটিভ ব্যবহার করে এক্সপোর্ট করতে হবে।
উপসংহার
মডিউল ডিক্লারেশন এবং মডিউল ইমপোর্ট Erlang প্রোগ্রামিং ভাষায় কোডের পুনঃব্যবহারযোগ্যতা এবং গঠনমূলক কোড লেখার জন্য অপরিহার্য। -module ডিরেকটিভের মাধ্যমে মডিউল ডিক্লেয়ার করা হয়, এবং -export ডিরেকটিভ ব্যবহার করে মডিউলের ফাংশন এক্সপোর্ট করা হয়। অন্য মডিউল থেকে ফাংশন ব্যবহারের জন্য ModuleName:Function/Arity সঠিক সিনট্যাক্স ব্যবহার করা হয়।
Read more