首页 > 解决方案 > 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 中找到某些东西时,任何一个都可以是非零。

我必须先处理overrideRefNodeoverrideNode所以我写道:

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

但事实证明,当两者都不是 nil 时,两者都被处理(for 循环的两次运行,正确),但是当overrideRefNode(第一个)为 nil 时,overrideNode(第二个)永远不会被处理(不正确),所以零次运行for 循环,而它应该是一次运行。

如何循环一组两个字符串,其中任何一个都可以是 nil,但必须处理每个非 nil?

标签: lua

解决方案


一种解决方法是

  local overrides = {}
  overrides[1] = overrideRefNode
  overrides[2] = overrideNode
  for i = 1,2 do
    local nodeVar = overrides[i]
    -- Do some stuff here with nodeVar
  end

推荐阅读