Aller au contenu principal
ShadowAcademy

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