ماژولها در لوا
ساخت ماژول با require، الگوهای ماژولنویسی و سازماندهی کد
ماژول چیست؟
ماژول (Module) فایلی از کد است که میتواند با require در جای دیگر بارگذاری شود. ماژولها کد را سازماندهی و قابل استفاده مجدد میکنند.
require — بارگذاری ماژول
-- بارگذاری کتابخانههای استاندارد
local math = require("math")
local string = require("string")
-- بارگذاری فایل محلی (مثلاً mylib.lua)
local mylib = require("mylib")
require هر ماژول را فقط یک بار بارگذاری میکند و نتیجه را cache میکند — requireهای بعدی همان جدول را برمیگردانند.ساخت ماژول — الگوی ۱: جدول ساده
-- فایل: mymath.lua
local mymath = {}
function mymath.add(a, b)
return a + b
end
function mymath.multiply(a, b)
return a * b
end
return mymath
-- فایل: main.lua
local mymath = require("mymath")
print(mymath.add(2, 3)) -- 5
print(mymath.multiply(4, 5)) -- 20
الگوی ۲: ماژول با متغیر خصوصی
-- فایل: counter.lua
local count = 0 -- خصوصی! بیرون دیده نمیشود
local counter = {}
function counter.increment()
count = count + 1
return count
end
function counter.get()
return count
end
return counter
الگوی ۳: ماژول تابعی
-- فایل: utils.lua
local function repeatString(s, n)
return string.rep(s, n)
end
local function clamp(v, min, max)
return math.max(min, math.min(v, max))
end
return {
repeatString = repeatString,
clamp = clamp,
}
ساختار پروژه ماژولار
myproject/
├── main.lua
└── lib/
├── utils.lua
├── mymath.lua
└── game/
└── player.lua
-- در main.lua:
local utils = require("lib.utils")
local player = require("lib.game.player")
ماژولهای استاندارد لوا
| ماژول | کار |
|---|---|
string | کار با رشتهها |
table | کار با جدولها |
math | توابع ریاضی |
os | سیستمعامل (زمان، تاریخ) |
io | ورودی/خروجی فایل |
coroutine | کوروتینها |
در ویرایشگر آنلاین ما require فایل خارجی کار نمیکند (فایلی وجود ندارد!) اما الگوهای ماژول را میتوانید داخل یک فایل تمرین کنید — همانطور که در مثالها میبینید.
این مبحث بخشی از دوره آموزش کامل لوا است.