Lua从功能问题返回

时间:2011-07-14 14:16:21

标签: function lua return

我正在尝试使用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

问题在于print("TRUEEEEE", i, xml[i])有效,但在下一行nil中返回return xml[i]。 我究竟做错了什么?

2 个答案:

答案 0 :(得分:7)

您正在递归调用该函数,但只提供一次返回。如果您碰巧在第二级找到了您要查找的节点,则只返回第一级的值,这对它没有任何作用。

也许你想要这样的东西(未经测试的代码):

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

答案 1 :(得分:2)

我认为你错过了else块中的回复:

return get_node_by_id(xml[i], nodeId)