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 nombresDeux 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) + 1Ensuite, 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]}`)
endDéfi
FacileConserve les scores des joueurs dont tu ne connais pas les noms à l’avance.
- Écris
type Scores = {[string]: number}et créelocal scores: Scores = {}. - Ajoute des points :
scores["mia"] = (scores["mia"] or 0) + 5, puis fais de même pour"leo"avec3. - Affiche
scores["mia"],scores["leo"]etscores["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
1Premiers pas avec Luau
Qu'est-ce que Luau ?Pourquoi utiliser Luau ?Votre premier code LuauVérification de type et modes d'erreurRécapitulatif : Introduction à Luau4Travailler avec les fonctions
Typer les paramètres et les valeurs de retourTyper les fonctions anonymesFonctions sans valeur de retourParamètres optionnelsValeurs par défaut des paramètresValeurs par défaut pour les booléensFonctions variadiquesDéfinir des types de fonctionsRécapitulatif : fonctions typées7Projet : gestionnaire de tâches typé
Projet : la structure d’une tâcheFonction pour ajouter une tâche2Types fondamentaux
Nombre, chaîne de caractères et booléenLe type « any » : une échappatoireLe type « unknown »Types nil et optionnelsL’inférence de types en actionAnnotations de type explicitesRécapitulatif : exercices sur les types fondamentaux5Alias, unions et intersections
Alias de types pour les types primitifsTypes unionsTravailler avec les types unionsTypes littérauxTypes intersectionsCombinaison d'alias de typesRécapitulatif : Combinaisons de types avancées3Tables typées : tableaux et maps
Tableaux typésAjouter et lire des élémentsQu’est-ce qu’un type Map ?Déclarer et accéder aux mapsParcourir les tablesTables de formes mixtesLire une grilleConstruire une grilletable.unpackRécapitulatif : tableaux et mapsEntraînez-vous par vous-même : Compilateur Luau en ligne