Menu
CoddyTech

Signatures d’index

Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 78 sur 80.

Tu as découvert les types map, comme {[string]: number}, dans le chapitre sur les tables : une signature d’index : n’importe quelle clé de type chaîne de caractères correspond à une valeur numérique. Ils sont très utiles lorsque les clés ne sont pas connues au moment où tu écris le code : compteurs, paramètres, caches, scores : tout ce qui se constitue à l’exécution.

type Counts = {[string]: number}

local counts: Counts = {}
counts["potion"] = 3   -- toute clé de type chaîne est autorisée
counts["sword"] = 1
counts["potion"] += 1  -- les valeurs sont vérifiées comme des nombres

Deux faits liés à l’exécution sont importants lorsque tu travailles avec des maps. D’abord, lire une clé qui n’a jamais été définie renvoie nil : le schéma classique de comptage gère cela avec or, qui remplace « absent » par 0 :

counts[item] = (counts[item] or 0) + 1

Ensuite, pairs() parcourt les clés d’une map dans un ordre non garanti : le même programme peut parcourir les clés différemment d’une exécution à l’autre. Lorsque le résultat doit être prévisible, rassemble les clés dans un tableau, trie-les avec table.sort, puis parcours le tableau trié à la place :

local keys: {string} = {}
for key in pairs(counts) do
    table.insert(keys, key)
end
table.sort(keys)
for _, key in ipairs(keys) do
    print(`{key}: {counts[key]}`)
end
challenge icon

Défi

Facile

Conserve les scores des joueurs dont tu ne connais pas les noms à l’avance.

  1. Écris type Scores = {[string]: number} et crée local scores: Scores = {}.
  2. Ajoute des points : scores["mia"] = (scores["mia"] or 0) + 5, puis fais de même pour "leo" avec 3.
  3. Affiche scores["mia"], scores["leo"] et scores["zed"].

Appuie sur Run Code : la sortie affiche 5, 3 et nil.

Essayez vous-même

-- 1) type Scores = {[string]: number}, puis local scores: Scores = {}
-- 2) ajoute 5 points pour "mia" et 3 pour "leo"
-- 3) affiche mia, leo et zed

Toutes les leçons de Introduction à Luau

Entraînez-vous par vous-même : Compilateur Luau en ligne