在定义表的键时,为什么会以随机顺序插入?

在 Love2d 项目中工作时,我注意到当定义具有键的表并将该表放置在另一个循环中时,表被以随机顺序插入。

为了测试这个问题,我编写了一个简短的脚本,希望能更好地解释我的困境。我的第一个假设是因为键被插入到内存可用的任何地方,尽管我不确定。我以前从未遇到过这种情况,有没有人有什么想法?

在此处输入图片描述

点赞
用户107090
用户107090

Lua 将表实现为哈希表,因此在遍历它们时出现了表面上的随机顺序。这是设计上的考虑,以便可以在平摊常量时间内访问表。

如果顺序对您很重要,请使用序列索引和复杂值,例如:

t[1] = { key="CA", value="California" }
t[2] = { key="TX", value="Texas" }
2019-02-10 18:44:34