为什么在 Lua 中排序 table 不起作用
why does sorting a table in Lua doesn't work
我有一段 Lua 代码产生错误,我不知道如何解决它。
.............................
local last_num = 0
local channelTable={}
for num in channels.each_number() do -- channels.each_number() returns 1.number in each call
channelTable[last_num] =num;
last_num = last_num +1;
end
table.sort(channelTable);
根据 lua 文档,我可以使用函数 sort
对 channelTable
中保存的数字进行排序。我得到的错误是:
attempt to index global 'table'
知道如何解决这个问题,或者应该实施冒泡排序吗?
感谢任何提示!
我认为问题可能是您希望在循环的每次迭代中调用 channels.each_number()。如果我没记错的话,我认为它只会在程序第一次进入循环时被调用。我相信,无论您在 for..in
循环中使用什么,都必须是 table。所以我想问题是你的 table 没有按照你想要的那样生成。尝试这样做:
print('number of items in channelTable = ' .. #channelTable)
如果结果为0,那可能就是我说的问题了
要么您没有加载 table 库,要么您不小心覆盖了它。
错误消息似乎被截断了:它应该说明索引失败的原因。
您看到的错误表明 table 库不可用。这个核心库不太可能不是您的 Lua 环境的一部分,因此您可能在代码的其他地方为 table 分配了一些内容。
我有一段 Lua 代码产生错误,我不知道如何解决它。
.............................
local last_num = 0
local channelTable={}
for num in channels.each_number() do -- channels.each_number() returns 1.number in each call
channelTable[last_num] =num;
last_num = last_num +1;
end
table.sort(channelTable);
根据 lua 文档,我可以使用函数 sort
对 channelTable
中保存的数字进行排序。我得到的错误是:
attempt to index global 'table'
知道如何解决这个问题,或者应该实施冒泡排序吗? 感谢任何提示!
我认为问题可能是您希望在循环的每次迭代中调用 channels.each_number()。如果我没记错的话,我认为它只会在程序第一次进入循环时被调用。我相信,无论您在 for..in
循环中使用什么,都必须是 table。所以我想问题是你的 table 没有按照你想要的那样生成。尝试这样做:
print('number of items in channelTable = ' .. #channelTable)
如果结果为0,那可能就是我说的问题了
要么您没有加载 table 库,要么您不小心覆盖了它。
错误消息似乎被截断了:它应该说明索引失败的原因。
您看到的错误表明 table 库不可用。这个核心库不太可能不是您的 Lua 环境的一部分,因此您可能在代码的其他地方为 table 分配了一些内容。