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

我尝试通过删除mainMenuButtonGroup1mainMenuButtonGroup6来完成操作。

为此,我认为我需要执行以下操作:[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
点赞
用户4323
用户4323

假设变量是全局的,它们将在_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,但是您必须循环遍历所有局部变量,直到找到所需的名称。 不是理想的解决方案,但是可以实现。

2013-11-22 15:45:15
用户828255
用户828255

根据您的评论,我假设这就是您想要做的事情,其中 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 不会重新排列该表的数字索引值。即,您会留下表中的空洞。请参见 table.remove

2013-11-22 17:29:25