【发布时间】:2022-12-10 19:56:29
【问题描述】:
我有一个奇怪的问题,从昨天开始我就无法在 Garry's Mod (GLua) 上解决
当我的 gmod 服务器游戏运行时,我注意到数组上存在错误,当它们被正确指定时,某些键为空,而在进行深度测试时,我注意到返回的数组是......倒退的。
下面是一个数组:
bigArray = {
[ "default" ] = { 4, 2, 1 },
[ "police" ] = { 4, 2, 1 },
[ "mayor" ] = { 5, 2, 1 },
[ "sherif" ] = { 6, 2, 1 },
}
好的,接下来我将使用PrintTable()方法(PrintTable()是游戏中已经集成的方法) 显示数组的内容(这种方法,通常如果我运行 PrintTable(bigArray) 结果应该是上面的数组,但这里是显示的结果:
{
[ "sherif" ] = { 6, 2, 1 },
[ "mayor" ] = { 5, 2, 1 },
[ "police" ] = { 4, 2, 1 },
[ "default" ] = { 4, 2, 1 },
}
我将举一个更能说明问题的例子,因为前一个是字典而不是数组:
table = {
'truc',
'machin',
'chose'
}
如果我像这样显示表的第一个元素print(table[1]),显示的结果将是:chose
把桌子倒过来让我使用的很多插件崩溃,我不知道这是怎么发生的,它是在我没有修改任何插件的情况下突然发生的(我已经看过 worshop 插件,他们都不对这个问题负责) 如果有人知道这是怎么造成的,我很感兴趣,谢谢。
【问题讨论】:
-
可能是因为“请注意,对于 Lua,数组也没有顺序。” quote
-
看起来您的某些插件依赖于未定义的迭代顺序。
-
print(table[1]), the displayed result will be: chose- 不可重现,数组和表键没有相同的行为:)。请注意,no order to keys in a table 的顺序没有颠倒(即您不能也不应该期望任何顺序)。 -
也许 GarrysMod 有自己的 Lua 表实现。 GMod Lua 与普通 Lua 有很大不同。
-
@AD7six 我知道他们没有任何特定的顺序,尤其是在 for 中,但是索引不应该像那样突然改变,尤其是在我从未接触过的脚本上,到目前为止索引一直是有序的它被宣布。
标签: arrays sorting lua lua-table garrys-mod