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: 2
Paquets
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.lua
que contingui funcions per convertir una cadena a majúscules i minúscules. - Crea un fitxer
main.lua
que utilitzi el mòdulstring_utils
per 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
luasocket
utilitzant LuaRocks. - Crea un fitxer
network.lua
que utilitziluasocket
per 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) end
Conclusió
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