Corona SDK(LUA) - 插入表格的麻烦

时间:2013-04-07 18:26:45

标签: lua corona

我搜索了很多,但是找不到解决方法。您可以提供任何帮助。

-- The array compiled of enemies only allowed in the current
-- level phase
local EnemyList = {}
-- Counter to determine the next spot in the EnemyList
-- array to insert into
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,但是value参数是必需的,我不知道如何通过将多个值存储到EnemyList数组中来实现这一点。

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

修改 我得到了一个有效的解决方案,但我认为如果将来有人发现它,我应该在这里更新代码。

-- The array compiled of enemies only allowed in the current
-- level phase
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

1 个答案:

答案 0 :(得分:2)

您可以在Lua中的表中存储表。表以两种方式之一索引:首先,按索引号。这是table.insert使用的内容;它将在下一个索引号处添加一个条目。

第二种方式是按键; e.g。

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

您可以将表插入表中;这是您创建2D表的方法。由于您定义表格的方式,type(EnemyList[counter]) = table

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

顺便说一下,我建议使用for i=1,#Enemies而不是for i,v in ipairs(Enemies)。第二个将迭代Enemies表中的所有数字条目。