2011-10-28 20 views
7

Basta scegliere Lua e cercare di capire come costruire tabelle. Ho fatto una ricerca e ho trovato informazioni su table.insert ma tutti gli esempi che ho trovato sembrano presupporre che voglio solo indici numerici mentre quello che voglio fare è aggiungere coppie di chiavi.Inserimento di coppie di chiavi nella tabella Lua

Quindi, mi chiedo se questo è valido?

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

Ciò avverrebbe in un ciclo e ho bisogno di essere in grado di accedere ai contenuti più avanti in:

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

Grazie

risposta

19

Ci sono essenzialmente due modi per creare tabelle e riempirle di dati.

Il primo è creare e riempire la tabella in una sola volta utilizzando un table constructor. Questo viene fatto come segue:

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

Quando non si sa quali valori si vuole lì in anticipo, è possibile innanzitutto creare la tabella utilizzando {} e poi riempirla con il [] dell'operatore:

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

Nota che è possibile utilizzare il secondo zucchero di sintassi (punto) solo se la chiave è una stringa che rispetta le regole dell'identificatore, ovvero inizia con una lettera o underscore e contiene solo lettere, numeri e trattino basso.

P.S.: Naturalmente è possibile combinare i due modi: creare una tabella con il costruttore tavolo e quindi riempire il resto con il [] dell'operatore:

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

Grazie per la spiegazione – Dayo

1

appare questa dovrebbe essere la risposta:

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

Ha fatto il lavoro per me.

+0

sì, ma non è necessario il'Key = Linea "Tabella chiave". – kikito

+2

-1: questo esempio non funziona. 'my_table.Key' non è la stessa cosa di' my_table [Key] '. –

+1

Molto gentile da parte di chiunque mi abbia votato mentre cercavo di capire una nuova lingua. Questo è stato un passo avanti e in seguito ho capito che "my_table [Key]" funziona. – Dayo

Problemi correlati