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

在Lua中,你可以这样创建一个表:

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

然而,如果我想创建一个关联表,我必须这样做:

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

下面的代码会报错:

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

是否有一种类似于我的第一个代码片段的方法来做到这一点?

原文链接 https://stackoverflow.com/questions/513239

点赞
stackoverflow用户33412
stackoverflow用户33412

正确的写法可以是:

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

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

local t = { ["one key"] = 1, ["another key"] = 2}
2009-02-04 21:08:33
stackoverflow用户425345
stackoverflow用户425345

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

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

不要

local petFamilies = {["Bat"]=["Cunning"],["Bear"]=["Tenacity"]};
2011-06-01 10:10:30
stackoverflow用户837969
stackoverflow用户837969

我认为如果你这样看的话,它会稍微更好理解:

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

使用 tablename.key=value 可以找到结果。

作为字典的表

表也可以用于存储没有数字或顺序索引的信息,就像数组一样。这种存储类型有时被称为字典、关联数组、哈希表或映射类型。我们将使用术语“字典”,其中一个元素对具有一个键和一个值。键用于设置和检索与之相关联的值。请注意,就像数组一样,我们可以使用 table[键]=值 的格式将元素插入到表中。键不需要是数字,它可以是字符串,或者是Lua对象的任何其他几乎任何其他对象(除了nil或0/0)。让我们构建一个包含一些键值对的表:

> t = { apple="green", orange="orange", banana="yellow" }
> for k,v in pairs(t) do print(k,v) end
apple   green
orange  orange
banana  yellow

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

2011-12-06 09:24:23