Les langages / Lua / Tables : tableaux et dictionnaires
Tables - Les dictionnaires
Les tables peuvent aussi servir de dictionnaires avec des clés personnalisées (strings, nombres, etc.). C'est très utile pour stocker des données structurées.
Création et accès aux dictionnaires
-- Création d'un dictionnaire
local joueur = {
nom = "Shadow",
niveau = 42,
vie = 100,
classe = "Guerrier"
}
-- Accès avec point
print(joueur.nom)
print(joueur.niveau)
-- Accès avec crochets
print(joueur["vie"])
print(joueur["classe"])
-- Modification
joueur.vie = 85
joueur["niveau"] = 43
Tables imbriquées
-- Table complexe
local entreprise = {
nom = "Delta Arts",
employes = {
{nom = "Shadow", poste = "Dev"},
{nom = "Galaderad", poste = "Designer"}
},
adresse = {
rue = "123 Rue du Code",
ville = "Paris",
pays = "France"
}
}
-- Accès aux données imbriquées
print(entreprise.nom)
print(entreprise.employes[1].nom)
print(entreprise.adresse.ville)
Parcourir un dictionnaire
local config = {
theme = "dark",
langue = "fr",
notifications = true,
volume = 75
}
-- Parcourir avec pairs
print("Configuration:")
for cle, valeur in pairs(config) do
print(cle .. " = " .. tostring(valeur))
end
-- Vérifier l'existence d'une clé
if config.theme then
print("Thème défini: " .. config.theme)
end
Tables mixtes et métaméthodes de base
-- Table mixte (tableau + dictionnaire)
local donnees = {
"Premier", -- [1]
"Deuxième", -- [2]
nom = "Config",
actif = true
}
print(donnees[1]) -- Premier
print(donnees.nom) -- Config
-- Copier une table (shallow copy)
function copierTable(t)
local copie = {}
for k, v in pairs(t) do
copie[k] = v
end
return copie
end
local nouvelle = copierTable(donnees)
3 exercices pour cette lecon
Les exercices demandent un compte : il faut bien enregistrer votre progression quelque part. La lecture, elle, reste libre. Creer un compte
- Table associative moyen 20 XP
- Table imbriquée difficile 35 XP
- Table comme set difficile 35 XP