我刚开始编程,选择了lua来写一个处理XML配置文件的脚本。
我使用 LuaXML(C 绑定版本)加载 XML 文件,它将它映射到一个高度嵌套的表。
当我尝试编写一个查找 xmltable 中标记的所有匹配项的函数时,我的问题出现了。匹配项插入到函数返回的表中。我的问题是这个表变量的声明,它必须是本地的。
首先我试过:
local result = result or {}
但这会在每次递归时声明变量。
最后我想出了这个可行的解决方案,但对我来说似乎太复杂了:
function findall_wrapper(xmltable, tag)
local results = {}
function findall(xmltable, tag)
if xml.TAG == tag then table.insert (results, xmltable) end
for k, v in pairs(xmltable) do
if (type(v) == "table") then findall(v, tag) end
end
end
findall(xmltable, tag)
return results
end
我怎样才能以更好、更优雅的方式解决这个问题?为什么local result = result or {}
每次递归都声明变量?
抱歉,如果我的问题的答案太明显了,但正如我所提到的,我刚刚开始编程。