我有以下代码:
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中找到某个内容时,两者都可以是非零。
我必须在处理overrideNode
之前处理overrideRefNode
,所以我写了:
for _,nodeVar in ipairs {overrideRefNode, overrideNode} do
if (nodeVar) then
但事实证明,当两者都不为零时,两者都会被处理(for循环的两次运行,正确(,但当overrideRefNode
(第一次(为零时,overrideNode
(第二次(永远不会被处理(不正确(,所以for循环的零次运行,而它应该是一次运行。
如何在两个字符串的集合上循环,其中任何一个都可以为零,但必须处理每个非零的字符串?
解决方法是
local overrides = {}
overrides[1] = overrideRefNode
overrides[2] = overrideNode
for i = 1,2 do
local nodeVar = overrides[i]
-- Do some stuff here with nodeVar
end