【问题标题】:Lua return from function problemLua从函数问题返回
【发布时间】:2011-10-05 09:31:32
【问题描述】:

我正在尝试使用 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]) 有效,但它在下一行return xml[i] 中返回nil。 我究竟做错了什么?

【问题讨论】:

  • 这根本不可能打印出 xml[i] ok 的内容,然后返回 nil ... 除非你有一些怪异的元表内容。我会修改你的代码示例。
  • 我知道这是不合逻辑的)))但它是)我无法想象有什么问题......

标签: function lua return


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我认为您在 else 块中缺少返回:

    return get_node_by_id(xml[i], nodeId)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 2015-07-02
      相关资源
      最近更新 更多