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?

¿Fue útil?

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"]};
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top