【问题标题】:why does sorting a table in Lua doesn't work为什么在 Lua 中对表格进行排序不起作用
【发布时间】:2015-01-06 06:30:53
【问题描述】:

我有一段 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'

知道如何解决这个问题,或者应该实施冒泡排序吗? 感谢您的任何提示!

【问题讨论】:

  • 你能单独运行一个简单的脚本来打印出_G 表吗?这至少可以告诉我们 table 和其他标准 lua 工具是否在您的环境中可用。

标签: sorting lua lua-table


【解决方案1】:

要么你没有加载表库,要么你不小心覆盖了它。

错误消息似乎被截断:它应该说明索引失败的原因。

【讨论】:

  • 我收到的错误消息是,我在 ARM9 上运行的 HTML 页面上使用 Lua。而且我得到的其余错误消息只是关于lua文件的路径,如何加载表?顺便谢谢你的回答!
  • @Engine,邮件末尾应该有(a xxx value)
  • 非常感谢您的帮助,但不:我正在使用 haserl CGI!
  • 再次感谢您的库被明确拒绝,我不知道,因为我没有盯着项目!
【解决方案2】:

您看到的错误表明该表库不可用。这个核心库不太可能不是您的 Lua 环境的一部分,因此您很可能在代码中的其他地方为 table 分配了一些东西。

【讨论】:

  • 感谢您的回答,是否可以使用 require 语句显式加载它
  • 据我了解,基础库在编译时内置于 Lua 解释器中,不能作为模块加载,因为没有库可以查找它们。不过,我可能完全错了——我从未使用过表库不可用的 Lua 环境。如果你尝试,你会得到什么: print(table);看看这个名字指的是什么?
【解决方案3】:

我认为问题可能在于您期望在循环的每次迭代中调用 channels.each_number() 。如果我没记错的话,我认为它只会在程序第一次通过循环时被调用。我相信,无论您在for..in 循环中使用什么,都必须是一个表格。所以我想问题是你的表没有按照你的意愿生成。尝试这样做:

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

如果结果为0,那么我说的可能是问题。

【讨论】:

  • 不,当注释表格行时,代码肯定不会完全按照我想要的方式工作
猜你喜欢
  • 2011-10-07
  • 2014-08-01
  • 2017-12-07
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
  • 2018-12-18
相关资源
最近更新 更多