Come inizializzare rapidamente una tabella associativa in Lua?
-
21-08-2019 - |
Domanda
In Lua, è possibile creare una tabella seguente modo:
local t = { 1, 2, 3, 4, 5 }
Tuttavia, voglio creare una tabella associativa, devo farlo nel modo seguente:
local t = {}
t['foo'] = 1
t['bar'] = 2
Di seguito dà un errore:
local t = { 'foo' = 1, 'bar' = 2 }
C'è un modo per farlo in modo simile al mio primo frammento di codice?
Soluzione
Il modo corretto di scrivere questo è o
local t = { foo = 1, bar = 2}
In alternativa, se le chiavi nella tabella non sono identificatori di legge:
local t = { ["one key"] = 1, ["another key"] = 2}
Altri suggerimenti
I belive che funziona un po 'meglio e comprensibile se si guarda a come questo
local tablename = {["key"]="value",
["key1"]="value",
...}
trovare un risultato con: tablename.key = valore
tabelle come dizionari
Le tabelle possono anche essere utilizzati per memorizzare informazioni che non è indicizzato numericamente, o in sequenza, come con gli array. Questi tipi di archiviazione sono a volte chiamati dizionari, array associativi, hash, o la mappatura tipi. Useremo il dizionario termine in cui una coppia elemento ha una chiave e un valore. La chiave viene utilizzato per impostare e recuperare un valore associato con esso. Nota che, proprio come gli array possiamo usare la tabella [tasto] = valore formato inserire gli elementi nella tabella. Una chiave non deve essere un numero, può essere una stringa, o per quella materia, praticamente qualsiasi altro oggetto Lua (Tranne che per nulla o 0/0). Costruiamo una tabella con un valore-chiave coppie in esso:
t = {mela = "verde", arancione = "orange", banana = "yellow"} per k, v in coppia (t) do di stampa (k, v) fine mela arancio verde arancio giallo banana
Per inizializzare array associativo che ha le chiavi stringa corrispondente valori di stringa, è necessario utilizzare
local petFamilies = {["Bat"]="Cunning",["Bear"]="Tenacity"};
ma non
local petFamilies = {["Bat"]=["Cunning"],["Bear"]=["Tenacity"]};