使用Corona SDK (LUA)插入表格时出现问题。

我已经搜索了很多,但还是找不到解决方案。如果您能提供任何帮助,将不胜感激。

-- 敌人列表只包括当前关卡能够出现的敌人
local EnemyList = {}
-- 计数器用于确定接下来该插入 EnemyList
-- 数组的下一个位置
local counter   = 1

for i=1,#Enemies do
    if Enemies[i].phase == 0 or Enemies[i].phase == which_phase then
        EnemyList[counter].src      = Enemies[i].src
        EnemyList[counter].exp      = Enemies[i].exp
        counter                     = counter + 1
    end
end

我得到了一个有关尝试对nil值进行索引的错误,该错误是有关于EnemyList表/数组的。我试图完成的是我要编译仅允许的敌人的新数组。我猜不知道如何向EnemyList表中插入新的行。我尝试使用table.insert,但需要值参数,我不确定如何处理该问题,因为我正在将多个值存储到EnemyList数组中。

任何有关向空表/数组中插入新行的正确方法的帮助或见解将不胜感激。谢谢!

编辑: 我找到了一个可行的解决方案,但我认为我应该在此处更新代码,以防未来有人找到它。

-- 敌人列表只包括当前关卡能够出现的敌人
local EnemyList = {}

for i=1,#Enemies do
    if Enemies[i].phase == 0 or Enemies[i].phase == which_phase then
        table.insert( EnemyList, { src = Enemies[i].src, exp = Enemies[i].exp } )
    end
end
点赞
用户88888888
用户88888888

在 Lua 中,你可以将一个表嵌套到另一个表中。表可以通过两种方式进行索引:第一种是使用索引号。这就是 table.insert 使用的方式;它会在下一个索引号处添加一个条目。

第二种方式是通过键值进行索引;例如:

> t = {}
> t.test = {}
> =t.test
table: 0077D320

你可以将表插入到另一个表中,这是创建 2D 表的方法。由于你定义了表的方式,因此 type(EnemyList[counter]) = table

你可以通过运行 table.insert(table, value) 来向表中插入新条目。这将把 value 分配给下一个可用的数值条目。type(value) 也可以是 table;这就是如何在 Lua 中创建“多维数组”。

顺便说一句,我建议使用 for i,v in ipairs(Enemies) 而不是使用 for i=1,#Enemies。第二种方法将遍历 Enemies 表中的所有数字条目。

2013-04-07 18:35:12