Les taules són una de les estructures de dades més potents i flexibles en Lua. Són utilitzades per emmagatzemar arrays, diccionaris, llistes, i fins i tot objectes. En aquest tema, aprendrem què són les taules, com crear-les, accedir-hi, modificar-les i utilitzar-les en diferents contextos.
Què és una Taula?
Una taula en Lua és una estructura de dades que pot emmagatzemar valors de qualsevol tipus, incloent altres taules. Les taules són dinàmiques, és a dir, poden canviar de mida durant l'execució del programa.
Creació de Taules
Per crear una taula en Lua, simplement utilitzem les claus {}. Aquí teniu alguns exemples:
-- Taula buida
local taula_buida = {}
-- Taula amb valors inicials
local taula_valors = {1, 2, 3, 4, 5}
-- Taula amb claus i valors
local taula_claus_valors = {
nom = "Joan",
edat = 30,
professió = "Enginyer"
}Accés a Elements de la Taula
Podem accedir als elements d'una taula utilitzant claus. Les claus poden ser números o cadenes de text.
local taula = {10, 20, 30, 40, 50}
-- Accés per índex numèric
print(taula[1]) -- Sortida: 10
print(taula[3]) -- Sortida: 30
local persona = {
nom = "Anna",
edat = 25,
professió = "Dissenyadora"
}
-- Accés per clau de cadena
print(persona["nom"]) -- Sortida: Anna
print(persona.edat) -- Sortida: 25Modificació de Taules
Podem afegir, modificar o eliminar elements d'una taula de manera molt senzilla.
local taula = {1, 2, 3}
-- Afegir un nou element
taula[4] = 4
print(taula[4]) -- Sortida: 4
-- Modificar un element existent
taula[2] = 20
print(taula[2]) -- Sortida: 20
-- Eliminar un element
taula[3] = nil
print(taula[3]) -- Sortida: nilIteració sobre Taules
Podem utilitzar bucles per iterar sobre els elements d'una taula. Lua proporciona diverses maneres de fer-ho.
for numèric
pairs i ipairs
local taula = {10, 20, 30, 40, 50}
-- Utilitzant ipairs per iterar sobre arrays
for i, v in ipairs(taula) do
print(i, v)
end
local persona = {
nom = "Anna",
edat = 25,
professió = "Dissenyadora"
}
-- Utilitzant pairs per iterar sobre taules amb claus de cadena
for k, v in pairs(persona) do
print(k, v)
endExercicis Pràctics
Exercici 1: Creació i Accés a Taules
- Crea una taula anomenada
cotxesamb els següents elements: "Toyota", "Honda", "Ford". - Afegeix un nou cotxe "Chevrolet" a la taula.
- Modifica el segon element de la taula per "Hyundai".
- Elimina el tercer element de la taula.
- Itera sobre la taula i imprimeix tots els elements.
Solució
local cotxes = {"Toyota", "Honda", "Ford"}
-- Afegir un nou cotxe
cotxes[4] = "Chevrolet"
-- Modificar el segon element
cotxes[2] = "Hyundai"
-- Eliminar el tercer element
cotxes[3] = nil
-- Iterar sobre la taula
for i, v in ipairs(cotxes) do
print(v)
endExercici 2: Taules amb Claus de Cadena
- Crea una taula anomenada
llibreamb les següents claus i valors:títol= "El Senyor dels Anells",autor= "J.R.R. Tolkien",any= 1954. - Afegeix una nova clau
gènereamb el valor "Fantasia". - Modifica el valor de la clau
anya 1955. - Elimina la clau
gènere. - Itera sobre la taula i imprimeix totes les claus i valors.
Solució
local llibre = {
títol = "El Senyor dels Anells",
autor = "J.R.R. Tolkien",
any = 1954
}
-- Afegir una nova clau
llibre.gènere = "Fantasia"
-- Modificar el valor de la clau any
llibre.any = 1955
-- Eliminar la clau gènere
llibre.gènere = nil
-- Iterar sobre la taula
for k, v in pairs(llibre) do
print(k, v)
endConclusió
Les taules són una eina fonamental en Lua que permeten emmagatzemar i gestionar dades de manera flexible i eficient. Hem après a crear taules, accedir-hi, modificar-les i iterar sobre els seus elements. Amb aquests coneixements, estem preparats per explorar conceptes més avançats com les metataules i els metamètodes en el següent tema.
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
