如何快速初始化Lua中的关联表?

时间:2009-02-04 20:46:42

标签: lua initialization lua-table

在Lua中,您可以通过以下方式创建表:

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

但是,我想创建一个关联表,我必须按照以下方式进行:

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

以下是错误:

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

有没有办法与我的第一个代码段类似?

3 个答案:

答案 0 :(得分:58)

写这个的正确方法是

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

或者,如果表中的密钥不是合法标识符:

local t = { ["one key"] = 1, ["another key"] = 2}

答案 1 :(得分:8)

我相信如果你像这样看待它会更好,也可以理解

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

使用以下内容查找结果: tablename.key = value

  
    

表格作为词典

  
     

表还可用于存储未编制索引的信息   数字或顺序,如数组。这些存储类型是   有时称为字典,关联数组,散列或映射   类型。我们将使用术语词典,其中元素对具有键   和一个价值。该键用于设置和检索关联的值   用它。请注意,就像数组一样,我们可以使用表[key] = value   格式以将元素插入表中。关键不一定是数字,   它可以是一个字符串,或者就此而言,几乎任何其他Lua对象   (除了零或0/0)。让我们构造一个具有一些键值的表   配对:

     
    

t = {apple =“green”,orange =“orange”,banana =“yellow”}     对于k,v成对(t)打印(k,v)结束苹果绿橙橙色香蕉黄

  

来自:http://lua-users.org/wiki/TablesTutorial

答案 2 :(得分:1)

要初始化具有与字符串值匹配的字符串键的关联数组,您应该使用

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

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