为什么“pairs”在lua中随机工作? 如何修复?

为什么下面的代码:

local x = {X = 1,Y = 2,Z = 3} 
local y = {} 

for Key,_ in pairs(x) do 
    table.insert(y,Key) 
end 

for i,v in ipairs(y) do 
    print(i,v) 
end

为什么当我们运行它时,它总是返回随机结果?

1       Z
2       Y
3       X

或者

1       Y
2       X
3       Z

原文链接 https://stackoverflow.com/questions/70701890

点赞
stackoverflow用户1442917
stackoverflow用户1442917

这是为了减少hashing attacks的风险而设计的。如果需要特定/固定的顺序,可以存储键,对其进行排序,然后使用键迭代该表。还可以参考这个SO answer来了解相关讨论。

2022-01-13 20:23:40