Cómo inicializar rápidamente una tabla asociativa en Lua?
-
21-08-2019 - |
Pregunta
En Lua, puede crear una tabla de la siguiente manera:
local t = { 1, 2, 3, 4, 5 }
Sin embargo, quiero crear una tabla asociativa, tengo que hacerlo de la siguiente manera:
local t = {}
t['foo'] = 1
t['bar'] = 2
La siguiente da un error:
local t = { 'foo' = 1, 'bar' = 2 }
¿Hay una manera de hacerlo de manera similar a mi primer fragmento de código?
Solución
La forma correcta de escribir esto es o bien
local t = { foo = 1, bar = 2}
O, si las llaves en su mesa no son identificadores legales:
local t = { ["one key"] = 1, ["another key"] = 2}
Otros consejos
i belive funciona un poco mejor y comprensible si nos fijamos en ello como esto
local tablename = {["key"]="value",
["key1"]="value",
...}
la búsqueda de un resultado con: tablename.key = valor
Tablas como diccionarios
Las tablas también se pueden utilizar para almacenar información que no está indexado numéricamente, o secuencialmente, como con matrices. Estos tipos de almacenamiento son a veces llamados los diccionarios, las matrices asociativas, hashes, o mapeo tipos. Vamos a utilizar el término del diccionario donde un par de elementos tiene una clave y un valor. La clave se utiliza para establecer y recuperar un valor asociado con eso. Tenga en cuenta que al igual que las matrices se puede utilizar la tabla [clave] = Valor formato para insertar elementos en la tabla. Una clave no tiene que ser un número, que puede ser una cadena, o para el caso, casi cualquier otro objeto Lua (A excepción de nil o 0/0). Vamos a construir una tabla con un poco de valor clave pares en él:
t = {manzana = "verde", naranja = "naranja", plátano = "amarilla"} para k, v en pares (t) hacer impresión (k, v) naranja naranja verde manzana extremo plátano amarillo
a partir de: http://lua-users.org/wiki/TablesTutorial
Para inicializar matriz asociativa que tiene claves de las cadenas coincidentes por los valores de cadena, debe utilizar
local petFamilies = {["Bat"]="Cunning",["Bear"]="Tenacity"};
y no
local petFamilies = {["Bat"]=["Cunning"],["Bear"]=["Tenacity"]};