今天在做模型展示的时候,用 pairs 去表里一个表结构,发现遍历出来的模型 id 是无序,
原因,
- pairs会输出table中的键和键值对,先顺序输出值,再乱序(键的哈希值)输出键值对
- ipairs并不会输出table中存储的键值对,会跳过键值对,然后顺序输出table中的值,遇到nil则会停止。
这是因为,table在存储值的时候是按照顺序的,但是在存储键值对的时候是按照键的哈希值存储的,并不会按照键的字母顺序或是数字顺序存储。
举例,
local a = {"Hello", "World", a = 1, b = 2, x = 10, y = 20, "Good", nil, "Bye"}
-- for i,v in ipairs(a) do
-- print(k,v)
-- end
for k,v in pairs(a) do
print(k,v)
end