En aquest tema, aprendrem sobre els mòduls i paquets en Lua, que són eines essencials per organitzar i reutilitzar el codi. Els mòduls permeten dividir el codi en parts més petites i manejables, mentre que els paquets ajuden a distribuir i compartir el codi entre diferents projectes.
Què és un Mòdul?
Un mòdul en Lua és simplement un fitxer que conté codi Lua. Aquest codi pot incloure funcions, variables, taules, etc., que es poden reutilitzar en altres parts del programa. Els mòduls ajuden a mantenir el codi organitzat i modular.
Creació d'un Mòdul
Per crear un mòdul, simplement escrivim el codi en un fitxer Lua i retornem una taula que conté els elements que volem exposar.
Exemple:
-- math_utils.lua
local math_utils = {}
function math_utils.add(a, b)
return a + b
end
function math_utils.subtract(a, b)
return a - b
end
return math_utilsÚs d'un Mòdul
Per utilitzar un mòdul, fem servir la funció require per carregar-lo.
Exemple:
-- main.lua
local math_utils = require("math_utils")
local sum = math_utils.add(5, 3)
local difference = math_utils.subtract(5, 3)
print("Sum: " .. sum) -- Output: Sum: 8
print("Difference: " .. difference) -- Output: Difference: 2Paquets
Els paquets són col·leccions de mòduls que es poden distribuir i compartir fàcilment. LuaRocks és el gestor de paquets més popular per Lua, que permet instal·lar, gestionar i compartir paquets Lua.
Instal·lació de LuaRocks
Per instal·lar LuaRocks, segueix les instruccions de la seva pàgina oficial.
Ús de LuaRocks
Un cop instal·lat LuaRocks, podem utilitzar-lo per instal·lar paquets Lua.
Exemple:
Creació d'un Paquet
Per crear un paquet Lua, necessitem un fitxer de manifest que descrigui el paquet. Aquest fitxer es diu rockspec.
Exemple de rockspec:
package = "math_utils"
version = "1.0-1"
source = {
url = "https://example.com/math_utils-1.0-1.tar.gz"
}
description = {
summary = "A simple math utilities module",
detailed = "This module provides basic math functions like addition and subtraction.",
homepage = "https://example.com/math_utils",
license = "MIT"
}
dependencies = {
"lua >= 5.1"
}
build = {
type = "builtin",
modules = {
math_utils = "math_utils.lua"
}
}Publicació d'un Paquet
Per publicar un paquet, utilitzem LuaRocks per pujar el fitxer rockspec al repositori de LuaRocks.
Exemple:
Exercicis Pràctics
Exercici 1: Creació i Ús d'un Mòdul
- Crea un fitxer anomenat
string_utils.luaque contingui funcions per convertir una cadena a majúscules i minúscules. - Crea un fitxer
main.luaque utilitzi el mòdulstring_utilsper convertir una cadena a majúscules i minúscules i imprimeixi els resultats.
Solució:
-- string_utils.lua
local string_utils = {}
function string_utils.to_upper(str)
return string.upper(str)
end
function string_utils.to_lower(str)
return string.lower(str)
end
return string_utils-- main.lua
local string_utils = require("string_utils")
local str = "Hello, World!"
print(string_utils.to_upper(str)) -- Output: HELLO, WORLD!
print(string_utils.to_lower(str)) -- Output: hello, world!Exercici 2: Instal·lació i Ús d'un Paquet Lua
- Instal·la el paquet
luasocketutilitzant LuaRocks. - Crea un fitxer
network.luaque utilitziluasocketper fer una petició HTTP a un lloc web i imprimeixi la resposta.
Solució:
-- network.lua
local http = require("socket.http")
local response, status = http.request("http://www.example.com")
if status == 200 then
print(response)
else
print("HTTP request failed with status: " .. status)
endConclusió
En aquesta secció, hem après a crear i utilitzar mòduls en Lua, així com a gestionar paquets amb LuaRocks. Els mòduls i paquets són eines poderoses per organitzar i reutilitzar el codi, i LuaRocks facilita la distribució i gestió de paquets Lua. Amb aquests coneixements, estàs preparat per escriure codi Lua més modular i mantenible.
Curs de Programació en Lua
Mòdul 1: Introducció a Lua
Mòdul 2: Conceptes Bàsics
Mòdul 3: Conceptes Intermedis
Mòdul 4: Conceptes Avançats
- Coroutines
- Programació Orientada a Objectes en Lua
- Tècniques de Depuració
- Optimització del Rendiment
- Ús de l'API C de Lua
Mòdul 5: Aplicacions Pràctiques
- Construcció d'un Joc Simple
- Scripting en Motors de Joc
- Automatització de Tasques amb Lua
- Integració de Lua amb Altres Llenguatges
