如何获取Lua中的第一个表值

如何获取Lua中的第一个表值,lua,lua-table,Lua,Lua Table,有没有更简单的方法?我需要得到表中的第一个值,它的索引 是整数,但可能不从[1]开始。谢谢 local tbl = {[0]='a',[1]='b',[2]='c'} -- arbitrary keys local result = nil for k,v in pairs(tbl) do -- might need to use ipairs() instead? result = v break end 返回用于迭代表的函数。Lua 5.2手册中对下一步做了如下说明: 没

有没有更简单的方法?我需要得到表中的第一个值,它的索引 是整数,但可能不从[1]开始。谢谢

local tbl = {[0]='a',[1]='b',[2]='c'}  -- arbitrary keys
local result = nil
for k,v in pairs(tbl) do -- might need to use ipairs() instead?
    result = v
    break
end
返回用于迭代表的函数。Lua 5.2手册中对下一步做了如下说明:

没有指定索引的枚举顺序,即使对于数字索引也是如此。(要按数字顺序遍历表格,请使用数字for

您必须迭代该表,直到找到键为止。比如:

local i = 0
while tbl[i] == nil do i = i + 1 end

此代码段假定该表至少有一个整数索引。

如果该表可以从零或一开始,但没有其他索引,则:

if tbl[0] ~= nil then
    return tbl[0]
else
    return tbl[1]
end

-- or if the table will never store false
return tbl[0] or tbl[1]
否则,您别无选择,只能使用
遍历整个表,因为键可能不再存储在数组中,而是存储在无序散列集中:

local minKey = math.huge
for k in pairs(tbl) do
    minKey = math.min(k, minKey)
end

上述三元
不能避免错误警告,例如
tble[0]==false
。您必须将其切换为
tbl[0]==nil,tbl[1]或tbl[0]
tbl={false}
将给出nil而不是false。可能没有问题,但不是那么明显。