如何在 Lua 中获得第一个 table 值
How do I get first table value in Lua
有更简单的方法吗?我需要获取表中的第一个值,其索引
是整数,但可能不从 [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
pairs()
returns the next()
函数迭代 table。 Lua 5.2 手册是这样说的 next
:
The order in which the indices are enumerated is not specified, even for numeric indices. (To traverse a table in numeric order, use a numerical for.)
您必须重复 table 直到找到密钥。类似于:
local i = 0
while tbl[i] == nil do i = i + 1 end
此代码片段假设 table 至少有 1 个整数索引。
如果 table 可能从零或一开始,但没有别的:
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
遍历整个 table,因为键可能不再存储在数组中,而是存储在无序的哈希集中:
local minKey = math.huge
for k in pairs(tbl) do
minKey = math.min(k, minKey)
end
有更简单的方法吗?我需要获取表中的第一个值,其索引 是整数,但可能不从 [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
pairs()
returns the next()
函数迭代 table。 Lua 5.2 手册是这样说的 next
:
The order in which the indices are enumerated is not specified, even for numeric indices. (To traverse a table in numeric order, use a numerical for.)
您必须重复 table 直到找到密钥。类似于:
local i = 0
while tbl[i] == nil do i = i + 1 end
此代码片段假设 table 至少有 1 个整数索引。
如果 table 可能从零或一开始,但没有别的:
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
遍历整个 table,因为键可能不再存储在数组中,而是存储在无序的哈希集中:
local minKey = math.huge
for k in pairs(tbl) do
minKey = math.min(k, minKey)
end