2009-02-04 16 views
30

En Lua, puede crear una tabla de la siguiente manera:¿Cómo inicializar rápidamente una tabla asociativa en Lua?

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 

A continuación se presenta un error:

local t = { 'foo' = 1, 'bar' = 2 } 

¿Hay alguna manera de hacerlo de manera similar a mi primer fragmento de código?

Respuesta

49

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} 
1

Para inicializar matriz asociativa que tiene teclas cadena coincidente con una cuerda valores, debe usar

local petFamilies = {["Bat"]="Cunning",["Bear"]="Tenacity"}; 

pero no

local petFamilies = {["Bat"]=["Cunning"],["Bear"]=["Tenacity"]}; 
7

i belive que 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 usar para almacenar información que no está indexada de forma numérica o secuencial, como con las matrices. Estos tipos de almacenamiento son a veces denominados diccionarios, matrices asociativas, hashes o mapeo de tipos . Usaremos el diccionario de términos donde un par de elementos tiene una clave y un valor. La clave se usa para establecer y recuperar un valor asociado con . Tenga en cuenta que al igual que las matrices, podemos utilizar el formato de tabla [clave] = valor para insertar elementos en la tabla. Una clave no necesita ser un número, puede ser una cadena, o para el caso, casi cualquier otro objeto Lua (excepto nulo o 0/0). Vamos a construir una tabla con un poco de valor clave pares en ella:

t = {manzana = "verde", naranja = "naranja", plátano = "amarilla"} para k, v en pares (t) hacer impresión (k, v) de naranja verde manzana finales de naranja plátano amarillo

de: http://lua-users.org/wiki/TablesTutorial

Cuestiones relacionadas