如何在Lua中获得第一个表值

时间:2015-01-08 22:05:26

标签: lua lua-table

有更简单的方法吗?我需要获取表中的第一个值,其索引是什么 是整数但可能不是从[1]开始。 THX!

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

2 个答案:

答案 0 :(得分:6)

如果表格可以从0或1开始,而不是其他任何内容:

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]

否则,您别无选择,只能使用pairs遍历整个表,因为密钥可能不再存储在数组中,而是存储在无序的哈希集中:

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

答案 1 :(得分:0)

pairs()返回next()函数以迭代表。 Lua 5.2手册说明了next

  

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

您必须迭代表,直到找到密钥。类似的东西:

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

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