Jak rychle inicializovat asociativní tabulky v Lua?

hlasů
30

V Lua, můžete vytvořit tabulku na následující cestu:

local t = { 1, 2, 3, 4, 5 }

Nicméně chci vytvořit asociativní tabulky, musím to udělat na následující cestu:

local t = {}
t['foo'] = 1
t['bar'] = 2

Vkládá se dává chybu:

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

Existuje způsob, jak to udělat podobně jako u mého prvního fragmentu kódu?

Položena 04/02/2009 v 21:46
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
51

Správný způsob, jak psát to buď

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

Nebo, v případě, že klíče v tabulce nejsou právnickými identifikátory:

local t = { ["one key"] = 1, ["another key"] = 2}
Odpovězeno 04/02/2009 v 22:08
zdroj uživatelem

hlasů
8

Věřím to funguje o něco lépe a pochopitelné, když se podíváte na to takhle

local tablename = {["key"]="value",
                   ["key1"]="value",
                   ...}

zjištění výsledku s: tablename.key = hodnota

Stoly jsou slovníky

Tabulky mohou být také použity k ukládání informací, které nejsou indexovány numericky, nebo postupně, jak se pole. Tyto typy skladování jsou někdy označovány jako slovníky, asociativní pole, hash, nebo typy mapování. Budeme používat termín slovníku kde dvojice prvek má klíč a hodnotu. Klíč se používá k nastavení a načtení hodnoty s ním spojené. Všimněte si, že stejně jako pole můžeme použít tabulku [klíč] = formát hodnotu pro vkládání prvků do tabulky. Klíčovým nemusí být číslo, může být řetězec, nebo když na to přijde, téměř jakýkoliv jiný předmět Lua (kromě nulových nebo 0/0). Pojďme postavit tabulku s několika dvojic klíč-hodnota v něm:

t = {jablko = "zelená", oranžová = "oranžový", banán = "žlutý"} pro k, v párech v (t) provést tisk (k, v) konec jablko zelená oranžový oranžový banán žlutá

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

Odpovězeno 06/12/2011 v 10:24
zdroj uživatelem

hlasů
1

Inicializace asociativního pole, která má klíče řetězců uzavřeno podle hodnoty řetězce, měli byste používat

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

ale ne

local petFamilies = {["Bat"]=["Cunning"],["Bear"]=["Tenacity"]};
Odpovězeno 01/06/2011 v 11:10
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more