在table中定义key时,为什么会乱序插入?
When defining keys in table, why is it inserted in a random order?
在 Love2d 项目上工作时,我注意到在使用键定义 tables 并将所述 tables 放入另一个 table 循环中时,table 以随机顺序插入。
为了测试这一点,我制作了一个简短的脚本,希望能更好地解释我的困境。我的第一个假设是因为密钥是在我有可用内存的任何地方插入的,尽管我不确定。我以前从未遇到过这种情况,有人有什么想法吗?
Lua 将表实现为哈希表,因此在遍历它们时会出现明显的随机顺序。这是设计使然,以便可以在摊销的常数时间内完成对表的访问。
如果顺序对您很重要,请使用顺序索引和复数值,就像这样
t[1] = { key="CA", value="California" }
t[2] = { key="TX", value="Texas" }
在 Love2d 项目上工作时,我注意到在使用键定义 tables 并将所述 tables 放入另一个 table 循环中时,table 以随机顺序插入。
为了测试这一点,我制作了一个简短的脚本,希望能更好地解释我的困境。我的第一个假设是因为密钥是在我有可用内存的任何地方插入的,尽管我不确定。我以前从未遇到过这种情况,有人有什么想法吗?
Lua 将表实现为哈希表,因此在遍历它们时会出现明显的随机顺序。这是设计使然,以便可以在摊销的常数时间内完成对表的访问。
如果顺序对您很重要,请使用顺序索引和复数值,就像这样
t[1] = { key="CA", value="California" }
t[2] = { key="TX", value="Texas" }