Lua将表插入到表
基本表格,它们应该是怎样的。但是我需要用函数来做,我怎么能做到呢Lua将表插入到表,lua,lua-table,Lua,Lua Table,基本表格,它们应该是怎样的。但是我需要用函数来做,我怎么能做到呢 本地主菜单={ caption=“主窗口”, description=“测试窗口”, 按钮={ {id=1,value=“Info”}, {id=2,value=“Return”}, {id=3,value=“Ok”}, {id=4,value=“Cancel”} }, 弹出=真 } 表应该基于外部参数,并为选项的每个变量编码一个表——这不是更好的方法。我为此创建了一个函数,它们应该创建基本选项,如标题或描述和弹出窗口,并将值插
本地主菜单={
caption=“主窗口”,
description=“测试窗口”,
按钮={
{id=1,value=“Info”},
{id=2,value=“Return”},
{id=3,value=“Ok”},
{id=4,value=“Cancel”}
},
弹出=真
}
表应该基于外部参数,并为选项的每个变量编码一个表——这不是更好的方法。我为此创建了一个函数,它们应该创建基本选项,如标题或描述和弹出窗口,并将值插入按钮表(如果启用了选项,则为addbutton)。但这里的问题是,它们不会插入到tmp表、按钮表以及下一个选项的值中
函数createMenu()
tmp={}
--按钮插入
如果是(config.info),那么
insert(tmp,{buttons={id=1,value=“Info”});
elseif(config.return)然后
insert(tmp,{buttons={id=2,value=“Return”});
结束
--主表
表.插入(tmp{
caption=“主窗口”,
description=“测试窗口”,
弹出=真
})
返回tmp
结束
如何修复它们?从查看您的
createMenu
函数可以看出两个明显的问题:
createMenu
操作时,为全局tmp
分配一个新表
打电话来return
关键字作为config
中的键createMenu
函数之外的代码中的其他地方使用tmp
,则可能会出现问题。显而易见的解决办法是将其更改为:
local tmp = {}
对于第二个问题,如果确实需要,可以使用lua关键字作为表键,但是不能使用
点语法来访问它,因为lua将以错误的方式解析它。相反,您需要更改:
config.return
到
编辑:阅读您的评论并检查示例表后,看起来只有按钮表可以通过数字索引访问。在这种情况下,您需要使用表。仅在按钮上插入。如果要创建具有关联键的表,则必须执行以下操作:
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
这将生成您在问题中描述的main菜单
表。config.return
无效,因为return
是lua关键字。请尝试config[“return”]
。是的,您是对的,但位于表的顶部-仅举个例子。所以createMenu函数应该创建表,使用window=createMenu()并通过函数-doCreateWindow(window,param1,callback)发送window。CreateMenu-返回表。这里的问题是,insert to tmp table-buttons table及其基于选项/外部数据的值(insert的问题,becouse table.insert(tmp,{buttons[2]={id=4,value=“Text”}})对我不起作用)@HappyDay您必须更好地澄清您遇到的问题。调用createMenu
后的预期输出是什么?你认为返回的桌子会是什么样子?实际上您得到了什么?因此,只有table.insert存在问题,我无法将值插入到table中-table中的按钮tmp=(table.insert
仅用于表的索引部分。换句话说,在执行table.insert
之后,您的按钮表将位于tmp[1]
,tmp[2]
等。使用点语法或[]
语法通过关联键插入。因此,我可以使用该函数?table.insert(tmp.buttons,{id=1,value=“text”}),它们会工作吗?
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