লুয়া ভাষায় require এবং module ফাংশন দুটি ব্যবহৃত হয় লাইব্রেরি এবং মডিউল ব্যবস্থাপনার জন্য। এগুলির মাধ্যমে আপনি একাধিক কোড ফাইল বা লাইব্রেরি ইম্পোর্ট করতে এবং কোড পুনঃব্যবহারযোগ্য করতে পারেন। require আধুনিক লুয়া সংস্করণে মূলত ব্যবহার হয়, এবং module পুরনো লুয়া সংস্করণে ব্যবহৃত ছিল, তবে এটি এখন অপ্রচলিত।
এখানে, require এবং module ফাংশনের বিস্তারিত আলোচনা করা হবে।
১. require ফাংশন
require হল লুয়া ভাষার একটি বিল্ট-ইন ফাংশন যা অন্য স্ক্রিপ্ট বা লাইব্রেরি ফাইলকে বর্তমান স্ক্রিপ্টে লোড (ইম্পোর্ট) করার জন্য ব্যবহৃত হয়। এটি একটি নির্দিষ্ট মডিউল বা ফাইলকে একবার লোড করে এবং পরবর্তীতে এটি পুনরায় লোড করা থেকে বিরত থাকে।
সিনট্যাক্স:
require("module_name")উদাহরণ:
ধরা যাক, আপনার কাছে একটি math_module.lua নামে ফাইল আছে:
math_module.lua
local M = {}
function M.add(a, b)
return a + b
end
function M.subtract(a, b)
return a - b
end
return Mএখন, আপনি এই মডিউলটি অন্য স্ক্রিপ্টে require ফাংশনের মাধ্যমে ব্যবহার করতে পারেন।
main.lua
local math = require("math_module")
print(math.add(5, 3)) -- আউটপুট: 8
print(math.subtract(10, 4)) -- আউটপুট: 6এখানে, require("math_module") দ্বারা math_module.lua ফাইলটি লোড করা হচ্ছে এবং এর সব ফাংশনগুলো ব্যবহার করা যাচ্ছে।
require ফাংশনের বৈশিষ্ট্য:
- একাধিকবার
requireকরা হলে এটি শুধুমাত্র একবার মডিউলটি লোড করবে এবং এরপর একই মডিউলকে পুনরায় লোড করবে না। - মডিউল নাম সাধারণত ফাইল নামের সাথে মিলে থাকে, তবে আপনি সঠিক পথ উল্লেখ করতে পারেন।
২. module ফাংশন (পুরানো সংস্করণে)
module ফাংশনটি পুরনো লুয়া সংস্করণে ব্যবহৃত হত মডিউল তৈরি করার জন্য। এটি ফাংশন ও ভ্যারিয়েবলগুলোকে বর্তমান স্কোপে সংজ্ঞায়িত করে এবং মডিউল হিসেবে আউটপুট প্রদান করে। তবে, এখনকার লুয়া সংস্করণে module ব্যবহৃত হয় না, এবং এর পরিবর্তে return ব্যবহার করে মডিউল রিটার্ন করা হয়।
পুরানো module ফাংশন ব্যবহার:
module("math_module", package.seeall)
function add(a, b)
return a + b
end
function subtract(a, b)
return a - b
endএই মডিউলটি এখন require এর মাধ্যমে অন্য স্ক্রিপ্টে ইম্পোর্ট করা যাবে:
require("math_module")
print(add(5, 3)) -- আউটপুট: 8
print(subtract(10, 4)) -- আউটপুট: 6module ফাংশনের বৈশিষ্ট্য:
moduleমডিউলটিকে তৈরি করে এবং এটি বৈশিষ্ট্য (functions, variables) প্রকাশ করে। এটিpackage.seeallব্যবহার করে সমস্ত গ্লোবাল পরিবেশে এক্সপোজ করতে পারে।- এটি পুরনো লুয়া সংস্করণে ব্যবহৃত হত এবং বর্তমানে এটির ব্যবহার বন্ধ হয়ে গেছে।
- এখনকার লুয়া সংস্করণে
returnব্যবহার করা হয় মডিউল রিটার্ন করার জন্য।
৩. মডিউল তৈরি করা return দিয়ে
বর্তমানে, লুয়া ভাষায় মডিউল তৈরি করতে return ব্যবহার করা হয়, যা বেশি আধুনিক এবং কার্যকর পদ্ধতি। এটি ফাংশনগুলোকে একটি টেবিলের মধ্যে রাখে এবং টেবিলটি রিটার্ন করে।
উদাহরণ:
math_module.lua
local M = {}
function M.add(a, b)
return a + b
end
function M.subtract(a, b)
return a - b
end
return Mএখন, আপনি এই মডিউলটি require ফাংশন দ্বারা ইম্পোর্ট করতে পারেন:
main.lua
local math = require("math_module")
print(math.add(5, 3)) -- আউটপুট: 8
print(math.subtract(10, 4)) -- আউটপুট: 6এখানে, মডিউলটি একটি টেবিল (M) হিসাবে রিটার্ন করা হয়েছে এবং সেই টেবিলের ফাংশনগুলো ব্যবহার করা হচ্ছে।
সারসংক্ষেপ
require: এটি মডিউল বা স্ক্রিপ্ট ফাইল লোড করার জন্য ব্যবহৃত হয় এবং শুধুমাত্র একবার লোড করা হয়।module: এটি পুরনো লুয়া সংস্করণে মডিউল তৈরি করার জন্য ব্যবহৃত হত, তবে বর্তমানে এটি অপ্রচলিত এবংreturnব্যবহার করা হয়।return: আধুনিক লুয়া সংস্করণে মডিউল রিটার্ন করার জন্য ব্যবহৃত হয়, এবং এটি একটি টেবিল রিটার্ন করে যা ফাংশন ও ডেটা ধারণ করে।
লুয়া ভাষায় মডিউল ব্যবস্থাপনা কোড পুনঃব্যবহারযোগ্য করতে সহায়তা করে এবং বড় স্ক্রিপ্টগুলিকে ছোট ছোট ইউনিটে ভাগ করে পরিচালনা করা যায়।
Read more