Lua:创建表格

时间:2014-05-01 20:53:42

标签: lua key key-value lua-table

我试图用一张桌子作为一次做两件事的手段。例如:

s = passengers -- user input
t = {[3] = car, [7] = bus, [24] = plane, [45] = train}

for k,v in ipairs t do
    if s = k then
        z = v * 10 -- cost per person
    end
end

现在这对于我正在努力做的事情来说是非常基础的。我有一个大约12个项目的列表,每个项目都有自己的编号。我想知道我是否可以使用表格执行上面所做的操作,并提供12个项目中的每一个都有自己的键值,然后使用它?此键值将表示每个项目特定的唯一编号。此外,我可以在后面的等式中使用该键的值,例如上面的吗?

1 个答案:

答案 0 :(得分:1)

如果您的密钥是唯一的,那么您的数据结构。表键的重点是直接访问相应的值。

这与你的循环有相同的效果:

local v = t[s] -- value for s or nil if s is not a key
if v != nil then 
    z = v * 10
end

(或者更完全相同:local v = rawget(t,s)来说明t__index元方法的情况。)

如果我们可以假设v永远不会是false(这会导致false * 10出错)那么它可以更自然地编写(跳过该错误):

local v = t[s]
if v then 
    z = v * 10
end