Lua:我可以使用 for 循环来处理数组中的所有'sometimes-nil'值吗?



我有以下代码:

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中找到某个内容时,两者都可以是非零。

我必须在处理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

最新更新