我有以下代码:
local overrideNode = xml.first(rootFromOverrideXML,"nodes/node[@identifier='"..nodeIdentifier.."']")
local overrideRefNode
if (elementRef) then overrideRefNode = xml.first(rootFromOverrideXML,"nodes/node[@identifier='"..elementRef.."']") end
在大多数情况下,这导致overrideNode
和overrideRefNode
为零。但是,当在xml中找到某些内容时,任何一个都可以为非nil。
我必须在overrideRefNode
之前处理overrideNode
,所以我写道:
for _,nodeVar in ipairs {overrideRefNode, overrideNode} do
if (nodeVar) then
但是结果是,当两个都不为nil时,都将对其进行处理(两次for循环,正确),但是当overrideRefNode
(第一个)为nil时,将不会处理overrideNode
(第二个) (不正确),因此for循环为零运行,而应为一运行。
我如何循环处理一组两个字符串,每个字符串都可以为nil,但是必须处理每个非nil?
一种解决方法是
local overrides = {}
overrides[1] = overrideRefNode
overrides[2] = overrideNode
for i = 1,2 do
local nodeVar = overrides[i]