Lua: 我可以使用 for 循环处理数组中所有的 '有时为空' 值吗?

我有以下代码:

  local overrideNode = xml.first(rootFromOverrideXML,"nodes/node[@identifier='"..nodeIdentifier.."']")
  local overrideRefNode
  if (elementRef) then overrideRefNode = xml.first(rootFromOverrideXML,"nodes/node[@identifier='"..elementRef.."']") end

这将导致 overrideNodeoverrideRefNode 在大多数情况下为空。但是当在 xml 中找到一些内容时,任一个都可以是非空。

我必须先处理 overrideRefNode,然后再处理 overrideNode,所以我写了:

  for _,nodeVar in ipairs {overrideRefNode, overrideNode} do
    if (nodeVar) then

但事实证明,当两者都是非空时,都将被处理(正确的 for 循环运行两次),但当 overrideRefNode(第一个)为空时,overrideNode(第二个)永远不会被处理(不正确),因此 for 循环运行 0 次,而应该运行 1 次。

我如何遍历两个字符串集合,其中任何一个都可以为空,但每个非空值都必须被处理?

点赞
用户1319469
用户1319469

一个解决方法是

  local overrides = {}
  overrides[1] = overrideRefNode
  overrides[2] = overrideNode
  for i = 1,2 do
    local nodeVar = overrides[i]
    -- 在此处与 nodeVar 进行一些操作
  end
2020-04-25 23:52:51