În Lua modern (Lua 5.2+ și 5.4), un modul este pur și simplu un fișier de cod care returnează o tabelă conținând funcțiile și constantele publice. Funcția require() încarcă modulul, rulează codul o singură dată și salvează rezultatul în memoria cache (package.loaded), astfel încât apelurile ulterioare returnează aceeași referință fără costuri de disc.
Crearea și consumarea unui modul matematic curat
-- Fișier: matematica.lua (Modulul):
local M = {} -- tabela exportată
-- Variabilă internă privată (neinclusă în M, invizibilă din exterior):
local PI_PRECIS = 3.141592653589793
function M.calculeazaArieCerc(raza)
return PI_PRECIS * raza * raza
end
function M.calculeazaPerimetruCerc(raza)
return 2 * PI_PRECIS * raza
end
return M -- returnăm tabela de API
----------------------------------------------------
-- Fișier: main.lua (Consumatorul):
local matematica = require("matematica")
local arie = matematica.calculeazaArieCerc(10)
print(string.format("Aria cercului cu raza 10 este: %.2f", arie))