我试图用一张桌子作为一次做两件事的手段。例如:
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个项目中的每一个都有自己的键值,然后使用它?此键值将表示每个项目特定的唯一编号。此外,我可以在后面的等式中使用该键的值,例如上面的吗?
答案 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