【发布时间】:2021-05-25 12:16:10
【问题描述】:
我知道,在 Lua 中,表键不会按创建顺序保留。到目前为止,我认为这是由于内部实现可能会不断地重新排列树节点以提高性能。但是,我不明白为什么以下 sn-p 不会转储相同的结果,即使它是在独立运行中执行的(例如,每次运行都运行 lua 解释器):
-- Example script
local t = {a = 1, b = 2}
for k,v in pairs(t) do
print(k,v)
end
有时上面的代码会转储:
a 1
b 2
或:
b 2
a 1
解释器怎么可能用这么少的行(确定性似乎很明显)转储不同的结果?是什么让这里的键顺序随机?顺序是在表创建时随机还是在表迭代时随机?
谢谢!
【问题讨论】: