如何使用Lua中的字符串访问表

时间:2013-11-22 15:41:27

标签: string lua corona lua-table

我正在尝试通过mainMenuButtonGroup1删除mainMenuButtonGroup6

要做到这一点,我想我需要做以下事情:[mainMenuButtonGroup..n]我该怎么做?

local mainMenuButtonGroup1 = { 1,2 }
local mainMenuButtonGroup2 = { 3,4 }
local mainMenuButtonGroup3 = { 5,6 }
local mainMenuButtonGroup4 = { 7,8 }
local mainMenuButtonGroup5 = { 9,10 }
local mainMenuButtonGroup6 = { 11,12 }

for n = 1, 6 do
      [mainMenuButtonGroup..n] = nil
end

2 个答案:

答案 0 :(得分:2)

根据您的评论,我认为这就像您想要做的那样,t就是您提到的表格。

for i = 1, 6 do
    local k = 'mainMenuButtonGroup' .. i
    t[k]:removeSelf()
    t[k] = nil
end

字符串连接由..双周期运算符执行,表格通过.[]进行索引。在这种情况下,您通过[]进行索引,因为您使用的是变量而不是常量名称。


编辑:将类似的局部变量放入表中。它使得作为一个群体进行迭代变得容易得多。事实上,我知道迭代本地的唯一方法是通过调试库。

local mainMenuButtonGroup = { {1,2}, {3,4}, {5,6}, {7,8}, {9,10} }
table.insert(mainMenuButtonGroup, {11,12})

for i = 1, 6 do
    mainMenuButtonGroup[i] = nil
end

但请注意,将表中的数字索引设置为nil不会重新排列表的数字索引值。 I.e。,你会留下桌子上的洞。请参阅table.remove

答案 1 :(得分:1)

假设变量是全局变量,它们将位于_G表中:

for n = 1, 6 do
   for i = _G['mainMenuButtonGroup'..n].numChildren, 1, -1 do
      _G['mainMenuButtonGroup'..n][i]:removeSelf()
      _G['mainMenuButtonGroup'..n][i] = nil
   end
end

如果它们是本地的,您可以使用debug.getlocal,但是您必须遍历所有本地人,直到找到所需的名称。不理想,但可能。