Tabele în Lua: Liste (Indexate de la 1), Dicționare și Iterare cu pairs/ipairs în Lua

Ghid complet pentru tabele în Lua: crearea listelor secvențiale indexate de la 1, tabele asociative cheie-valoare, diferența critică dintre ipairs și pairs.

Sintaxă
for i, v in ipairs(tabel) do ... end | for k, v in pairs(dict) do ... end

Tabela (table) este singurul mecanism de structurare a datelor din Lua. Ea este extrem de versatilă: dacă este indexată cu numere întregi consecutive pornind de la 1, funcționează ca un tablou secvențial (array / listă); dacă este indexată cu șiruri de caractere sau obiecte, funcționează ca un dicționar asociativ (hashmap).

Liste, dicționare și iterare corectă în Lua
-- 1. Tablou secvențial (Listă) - indexarea începe de la 1:
local limbaje = {"Lua", "Python", "C++", "Rust"}

print("Primul element este:", limbaje[1]) -- "Lua"
print("Numărul total de elemente:", #limbaje) -- 4

-- Iterare secvențială ordonată prin 'ipairs' (se oprește la primul nil):
print("\n--- Iterare cu ipairs ---")
for index, valoare in ipairs(limbaje) do
    print(string.format("Index %d: %s", index, valoare))
end

-- 2. Dicționar (Tabel asociativ):
local configurareServer = {
    gazda = "127.0.0.1",
    port = 8080,
    activat = true,
    nume = "ServerProducție"
}

-- Accesarea proprietăților prin sintaxa cu punct sau paranteze drepte:
print("Portul serverului:", configurareServer.port)
configurareServer["maxConexiuni"] = 1000

-- Iterare prin toate cheile prin 'pairs' (ordinea nu este garantată):
print("\n--- Iterare cu pairs ---")
for cheie, valoare in pairs(configurareServer) do
    print(cheie .. " => " .. tostring(valoare))
end
Iterator Tip de tabel vizat Comportament la parcurgere
ipairs(t) Tablouri secvențiale (array-uri indexate numeric 1..n). Parcurge strict de la 1 în ordine crescătoare; se oprește la prima valoare nil.
pairs(t) Dicționare sau tabele cu chei arbitrare (șiruri, obiecte). Parcurge toate perechile cheie-valoare din tabela hash în ordine internă nedeterministă.