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:

luarocks install luasocket

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:

luarocks upload math_utils-1.0-1.rockspec

Exercicis Pràctics

Exercici 1: Creació i Ús d'un Mòdul

  1. Crea un fitxer anomenat string_utils.lua que contingui funcions per convertir una cadena a majúscules i minúscules.
  2. Crea un fitxer main.lua que utilitzi el mòdul string_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

  1. Instal·la el paquet luasocket utilitzant LuaRocks.
  2. Crea un fitxer network.lua que utilitzi luasocket per fer una petició HTTP a un lloc web i imprimeixi la resposta.

Solució:

luarocks install luasocket
-- 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.

© Copyright 2024. Tots els drets reservats