Lua将表格插入表格

时间:2013-06-30 04:05:41

标签: lua lua-table

基本表,它们应该如何。但我需要按功能去做,我该怎么做?

local mainMenu = {
  caption = "Main Window",
  description = "test window",
  buttons = {
  { id = 1, value = "Info" },
  { id = 2, value = "Return" },
  { id = 3, value = "Ok" },
  { id = 4, value = "Cancel" }
  },
  popup = true
  }

表应该基于外部参数,并为每个变量选项编写一个表 - 不是更好的方法。我为此创建了一个函数,他们应该创建基本选项,如标题或描述并弹出,并将值插入按钮表(如果启用了选项 - 添加按钮)。但问题是,他们不会插入到tmp表,按钮表及其下一个选项的值。

   function createMenu()
    tmp = {}
    --buttons insert
   if(config.info) then
    table.insert(tmp, {buttons = {id = 1, value = "Info"}});
   elseif(config.return) then
    table.insert(tmp, {buttons = {id = 2, value = "Return"}});
   end
    --table main
   table.insert(tmp, {
    caption = "Main Window",
    description = "test window",
    popup = true
    })
     return tmp
   end

我如何修理它们?

1 个答案:

答案 0 :(得分:5)

通过查看createMenu函数,会出现两个明显的问题:

  1. 每次tmp分配给全球 createMenu新表 调用。
  2. 使用return关键字作为config中的密钥。
  3. 如果您在tmp函数之外的代码中的其他位置使用createMenu,则可能会出现问题。显而易见的解决方法是将其更改为:

    local tmp = {}
    

    对于第二个问题,如果你真的想要可以使用lua关键字作为表键,但是你将无法使用.点语法来访问它Lua将以错误的方式解析这个问题。相反,你需要改变:

    config.return
    

    config["return"].
    

    编辑:阅读完评论并查看示例表后,看起来只有数字索引才能访问按钮表。在这种情况下,您只想在table.insert上使用button。如果要创建具有关联键的表,则必须执行以下操作:

    function createMenu()
      local tmp = 
      {
        --table main
        caption = "Main Window",
        description = "test window",
        popup = true,
        --button table
        buttons = {}
      }
      --buttons insert
      if config.info then
        table.insert(tmp.buttons, {id = 1, value = "Info"});
      elseif config['return']  then
        table.insert(tmp.buttons, {id = 2, value = "Return"});
      end
    
      return tmp
    end
    

    这将生成您在问题中描述的mainMenu表格。