gpt4 book ai didi

lua - 在错误的位置插入 - 为什么 lua 表会这样?

转载 作者:行者123 更新时间:2023-12-04 14:18:29 24 4
gpt4 key购买 nike

我需要按特定顺序将元素添加到 lua 表中,并尝试将每个元素插入到其最终位置(但以随机顺序)。我是 lua 的新手,之前没有使用过 table.insert(只读过表支持关联和数组形式),但我很确定它不能以这种方式工作,所以我做了一个小测试:

local test = {}
table.insert(test, 5, "5")
table.insert(test, 1, "1")
table.insert(test, 4, "4")
table.insert(test, 3, "3")
table.insert(test, 2, "2")

每次插入后的测试输出都传递了这个有趣的行为:

["5"]
["5","1"]
["1","4","5"]
["1","3","4","5"]
["1","2","3","4","5"]

实际上它的效果比预期的要好(我认为在位置 4 处插入两个元素的表可能会追加),但是第 2 行和第 3 行让我非常困惑。在位置 1 插入追加,下一个插入重新排序其他元素?!?

接下来的尝试是避免使用 table.insert 而是使用 test[5] = "5"等。结果完全一样……

解决它的唯一方法是先用空字符串初始化元素 1 到 5,然后以随机顺序插入实际值。

有人知道为什么表格会这样吗?

最佳答案

如果没有 sequence,您的操作不会明智地应用到表中.第一个语句创建一个没有序列的表。然后一切都向南。

6.6 – Table Manipulation

Remember that, whenever an operation needs the length of a table, all caveats about the length operator apply (see §3.4.7).

人们通常会选择是否保持表格的顺序。如果不是,请避免为序列设计的函数和 # 运算符(它是内置实现)。

您可以按照@lhf 的描述构建表格:

local test = {}
test[5] = "5"
test[1] = "1"
test[4] = "4"
test[3] = "3"
test[2] = "2"

然后当您确信您已经创建了一个带有序列的表时,开始按顺序处理该表。

关于lua - 在错误的位置插入 - 为什么 lua 表会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57612461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com