cyh*_*iso 2 lua return function
我正在尝试用lua解析一些xml文件,我仍然坚持这个功能:
function get_node_by_id (xml, nodeId)
for i=1, #xml, 1 do
if get_attr_by_name(xml[i], 'Id') == nodeId then
print ("TRUEEEEE", i, xml[i])
return xml[i]
else
get_node_by_id(xml[i], nodeId)
end
end
end
Run Code Online (Sandbox Code Playgroud)
问题是print("TRUEEEEE", i, xml[i])
有效,但它会nil
在下一行返回return xml[i]
.我究竟做错了什么?
您以递归方式调用该函数,但仅提供单个返回.如果您碰巧在第二级找到要查找的节点,则只将该值返回到第一级,这对它没有任何作用.
也许你想要这样的东西(未经测试的代码):
function get_node_by_id (xml, nodeId)
for i=1, #xml, 1 do
if get_attr_by_name(xml[i], 'Id') == nodeId then
print ("TRUEEEEE", i, xml[i])
return xml[i]
else
local node = get_node_by_id(xml[i], nodeId)
if node then return node end
end
end
end
Run Code Online (Sandbox Code Playgroud)