2011-10-28 14 views
7

Simplemente seleccionando a Lua e intentando averiguar cómo construir tablas. Hice una búsqueda y encontré información en table.insert, pero todos los ejemplos que he encontrado parecen suponer que solo quiero índices numéricos, mientras que lo que quiero hacer es agregar pares de claves.Inserción de pares de claves en la tabla de Lua

Entonces, me pregunto si esto es válido?

my_table = {} 
    my_table.insert(key = "Table Key", val = "Table Value") 

Esto se haría en un bucle y tengo que ser capaz de acceder a los contenidos más adelante en:

for k, v in pairs(my_table) do 
     ... 
    end 

Gracias

Respuesta

19

Existen esencialmente dos formas de crear tablas y completarlas con datos.

Primero es crear y llenar la tabla de una vez usando un table constructor. Esto se hace como sigue:

tab = { 
    keyone = "first value",  -- this will be available as tab.keyone or tab["keyone"] 
    ["keytwo"] = "second value", -- this uses the full syntax 
} 

Cuando usted no sabe valores que se desean allí de antemano, puede crear primero la tabla usando {} y luego llenarlo con el [] operador:

tab = {} 
tab["somekey"] = "some value" -- these two lines ... 
tab.somekey = "some value" -- ... are equivalent 

Nota que puede usar la segunda sintaxis (punto) de azúcar solo si la clave es una cadena que respeta las reglas del "identificador", es decir, comienza con una letra o guión bajo y contiene solo letras, números y guiones bajos.

P.S.: Por supuesto, puede combinar las dos formas: crear una tabla con el constructor mesa y luego llenar el resto con el operador []:

tab = { type = 'list' } 
tab.key1 = 'value one' 
tab['key2'] = 'value two' 
+0

Gracias por la explicación – Dayo

1

Aparece esto debería ser la respuesta:

my_table = {} 
Key = "Table Key" 
-- my_table.Key = "Table Value" 
my_table[Key] = "Table Value" 

Hizo el trabajo por mí.

+0

sí, pero no es necesario'y = "Tabla clave" 'línea. – kikito

+2

-1: Este ejemplo no funciona en realidad. 'my_table.Key' no es lo mismo que' my_table [Key] '. –

+1

Muy amable de quien me votó mientras trataba de entender un nuevo idioma. Eso fue un paso más cerca y luego descubrí que "my_table [Key]" funciona. – Dayo

Cuestiones relacionadas