Comment initialiser rapidement une table associative en Lua?
-
21-08-2019 - |
Question
Dans Lua, vous pouvez créer une table de la façon suivante:
local t = { 1, 2, 3, 4, 5 }
Cependant, je veux créer une table associative, je dois le faire de la manière suivante:
local t = {}
t['foo'] = 1
t['bar'] = 2
Le tableau suivant donne une erreur:
local t = { 'foo' = 1, 'bar' = 2 }
Est-il possible de le faire de façon similaire à mon premier extrait de code?
La solution
La bonne façon d'écrire ce soit est
local t = { foo = 1, bar = 2}
Ou, si les clés de votre table ne sont pas des identificateurs juridiques:
local t = { ["one key"] = 1, ["another key"] = 2}
Autres conseils
i belive cela fonctionne un peu mieux et compréhensible si vous regardez comme ça
local tablename = {["key"]="value",
["key1"]="value",
...}
trouver un résultat avec: tablename.key = valeur
Tableaux des dictionnaires
Les tableaux peuvent également être utilisés pour stocker des informations qui ne sont pas indexées numériquement, ou séquentiellement, comme avec les tableaux. Ces types de stockage sont parfois appelés dictionnaires, tableaux associatifs, hash, ou la cartographie les types. Nous allons utiliser le dictionnaire terme où une paire d'éléments a une clé et une valeur. La clé est utilisée pour définir et récupérer une valeur associée avec ça. Notez que comme des tableaux, nous pouvons utiliser la table [key] = valeur format à insérer des éléments dans la table. Une clé ne doit pas être un numéro, il peut être une chaîne, ou pour cette matière, presque tout autre objet Lua (À l'exception de zéro ou 0/0). Construisons une table avec une valeur clé paires dans ce:
t = {pomme = "vert", orange = "orange", banane = "jaune"} pour k, v par paires (t) faire impression (k, v) pomme extrémité verte orange orange jaune banane
à partir de: http://lua-users.org/wiki/TablesTutorial
Pour initialiser un tableau associatif qui a des touches de chaîne assortis par des valeurs de chaîne, vous devez utiliser
local petFamilies = {["Bat"]="Cunning",["Bear"]="Tenacity"};
mais pas
local petFamilies = {["Bat"]=["Cunning"],["Bear"]=["Tenacity"]};