লুয়া (Lua) ভাষায় মডিউল (Module) হলো এমন কোডের একটি গ্রুপ যা নির্দিষ্ট কাজ সম্পাদন করে এবং পুনঃব্যবহারযোগ্য হয়। আপনি লুয়া ভাষায় কাস্টম মডিউল তৈরি করতে পারেন এবং সেই মডিউলগুলো বিভিন্ন জায়গায় ব্যবহার করার জন্য ইম্পোর্ট করতে পারেন। এটি কোডের পুনঃব্যবহারযোগ্যতা এবং মেইনটেনেবিলিটি উন্নত করতে সাহায্য করে।
এই টিউটোরিয়ালে আমরা কাস্টম মডিউল তৈরি এবং ইম্পোর্ট করার পদ্ধতি দেখব।
১. কাস্টম মডিউল তৈরি (Creating a Custom Module)
কাস্টম মডিউল তৈরি করার জন্য একটি সাধারণ লুয়া ফাইল তৈরি করা হয় এবং সেই ফাইলে ফাংশন বা ভ্যারিয়েবল ঘোষণা করা হয়। লুয়া মডিউল তৈরি করতে সাধারণত একটি টেবিল ব্যবহার করা হয়, যেখানে মডিউলের ফাংশন এবং ভ্যালু সংরক্ষিত থাকে।
উদাহরণ:
math_operations.lua (কাস্টম মডিউল)
-- math_operations.lua
local M = {} -- একটি টেবিল তৈরি
function M.add(a, b)
return a + b
end
function M.subtract(a, b)
return a - b
end
function M.multiply(a, b)
return a * b
end
function M.divide(a, b)
if b == 0 then
return nil, "Division by zero is not allowed."
else
return a / b
end
end
return M -- মডিউলটি রিটার্ন করাএখানে, math_operations.lua একটি কাস্টম মডিউল তৈরি করা হয়েছে যেখানে কিছু সাধারণ গণনা ফাংশন সংরক্ষিত আছে (যেমন যোগ, বিয়োগ, গুণ, ভাগ)।
২. কাস্টম মডিউল ইম্পোর্ট (Importing a Custom Module)
লুয়া ভাষায় একটি কাস্টম মডিউল ইম্পোর্ট করার জন্য require ফাংশন ব্যবহার করা হয়। require ফাংশনটি একটি মডিউল লোড করে এবং সেই মডিউলের মধ্যে সংরক্ষিত ফাংশন এবং ভ্যালুগুলিকে অ্যাক্সেস করার সুযোগ দেয়।
উদাহরণ:
main.lua (কাস্টম মডিউল ইম্পোর্ট এবং ব্যবহার)
-- math_operations.lua মডিউলটি ইম্পোর্ট করা
local math_ops = require("math_operations")
-- মডিউলের ফাংশন ব্যবহার করা
print(math_ops.add(5, 3)) -- আউটপুট: 8
print(math_ops.subtract(5, 3)) -- আউটপুট: 2
print(math_ops.multiply(5, 3)) -- আউটপুট: 15
local result, err = math_ops.divide(5, 0)
if err then
print(err) -- আউটপুট: Division by zero is not allowed.
else
print(result)
endএখানে, math_operations মডিউলটি require("math_operations") দিয়ে ইম্পোর্ট করা হয়েছে এবং পরে তার ফাংশনগুলো ব্যবহার করা হয়েছে।
৩. মডিউল লোডিং কিভাবে কাজ করে?
লুয়া মডিউল লোড হওয়ার সময় এটি একবার লোড হয় এবং পরবর্তীতে যেকোনো স্ক্রিপ্টে require করলে এটি কেবলমাত্র আগে থেকে লোড করা মডিউলটির রেফারেন্স প্রদান করবে। এর মাধ্যমে কোডের একাধিক কপি লোড হওয়ার হাত থেকে বাঁচানো যায়।
উদাহরণ:
-- main.lua ফাইলে কোড
local math_ops1 = require("math_operations")
local math_ops2 = require("math_operations")
print(math_ops1 == math_ops2) -- আউটপুট: trueএখানে, math_ops1 এবং math_ops2 একই মডিউল রেফারেন্সটি পাবে, কারণ লুয়া মডিউলটি একবার লোড হওয়ার পর এটি ক্যাশে করে রাখে এবং পরবর্তী ব্যবহারে একই রেফারেন্স প্রদান করে।
৪. মডিউল ফাইলের পাথ
যদি আপনি কোনো কাস্টম মডিউল অন্য ফোল্ডারে সংরক্ষণ করতে চান, তাহলে ফাইল পাথও সঠিকভাবে প্রদান করতে হবে। উদাহরণস্বরূপ:
উদাহরণ:
local math_ops = require("modules.math_operations")এখানে, modules/ ফোল্ডারের মধ্যে math_operations.lua মডিউলটি রয়েছে, এবং require ফাংশনটি সেই ফোল্ডারের পাথ ব্যবহার করে মডিউলটি লোড করবে।
সারসংক্ষেপ
লুয়া ভাষায় কাস্টম মডিউল তৈরি এবং ইম্পোর্ট করা একটি সহজ প্রক্রিয়া, যা কোডের পুনঃব্যবহারযোগ্যতা এবং সংগঠন বাড়াতে সাহায্য করে।
- কাস্টম মডিউল তৈরি: একটি টেবিল তৈরি করে ফাংশনগুলো সংরক্ষণ করা হয় এবং শেষে
returnদিয়ে মডিউলটি রিটার্ন করা হয়। - কাস্টম মডিউল ইম্পোর্ট:
requireফাংশন ব্যবহার করে মডিউল ইম্পোর্ট করা হয় এবং মডিউলের ফাংশন বা ভ্যালু ব্যবহার করা হয়।
এটি বড় প্রোগ্রামে কোডের পুনঃব্যবহারযোগ্যতা এবং মেইনটেনেবিলিটি নিশ্চিত করতে সহায়তা করে।
Read more