这是一个例子
local query = {}
query['count'] = 1
query['query'] = 2
for k,v in pairs(query) do
print(k)
end
Run Code Online (Sandbox Code Playgroud)
上述首先打印query
然后count
.
如何在不添加int索引键的情况下确保在循环遍历表时键字符串保持其顺序?
Jos*_*osh 10
我在评论中回答,但是我在这里移动它以更好地了解我在说什么.
local queryindex = {"count", "query"}
local query = {}
query['count'] = 1
query['query'] = 2
for _,v in ipairs(queryindex) do
print(query[v])
end
Run Code Online (Sandbox Code Playgroud)
在Lua中,只有具有从1开始的连续整数键的表(也称为数组表)才能按顺序解析。
所以,如果你想按t
顺序解析一个表,你要做的是:
keys
表进行排序keys
表来迭代t
.例子:
function sortedKeys(query, sortFunction)
local keys, len = {}, 0
for k,_ in pairs(query) do
len = len + 1
keys[len] = k
end
table.sort(keys, sortFunction)
return keys
end
...
local query = {}
query['count'] = 1
query['query'] = 2
for _,k in pairs(sortedKeys(query)) do
print(k, query[k])
end
Run Code Online (Sandbox Code Playgroud)
也可以创建一个迭代器来更惯用地执行此操作,但我从来没有需要。