为什么在Lua中对表进行排序不起作用

时间:2015-01-05 12:08:05

标签: sorting lua 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文档,我可以使用函数sortchannelTable中保存的数字进行排序。我得到的错误是:

attempt to index global 'table'

我知道如何解决这个问题,或者应该实施冒泡排序? 谢谢你的暗示!

3 个答案:

答案 0 :(得分:2)

要么您没有加载表库,要么意外地覆盖了它。

错误消息似乎被截断:它应该说为什么索引失败。

答案 1 :(得分:1)

您看到的错误表明表库不可用。此核心库不太可能不属于您的Lua环境,因此很可能您已在代码中的其他位置分配了某些内容。

答案 2 :(得分:0)

我认为问题可能是你期望在循环的每次迭代中调用channels.each_number()。如果我没有弄错的话,我认为它只会在程序第一次通过循环时被调用。我相信,无论你在for..in循环中使用什么,都需要成为一张桌子。所以我想问题是你的表没有按照你想要的那样生成。试着这样做:

print('number of items in channelTable = ' .. #channelTable)

如果它出现0,那么我说的可能是问题。