lua - 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
这导致在大多数情况下为零overrideNode
。overrideRefNode
但是当在 xml 中找到某些东西时,任何一个都可以是非零。
我必须先处理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]
-- Do some stuff here with nodeVar
end
推荐阅读
- sql - 我的承认/重新接受 sql 查询没有选择所有重新接受
- javascript - 多个 Angular GET 请求中的相关参数
- c++ - OpenGL:我如何控制渲染以使其空闲?
- fedora - 为什么 Scilab 不在我的 Fedora 系统上的绘图上显示网格?
- laravel - [Vue 警告]:无法解析组件:应用程序位于
Laravel 8 和 Vue 3 - google-tag-manager - 谷歌标签管理器 - 一些点击没有被注册
- visual-studio-code - 如何以 Github Copilot 中使用的样式格式化自动填充文本?
- javascript - 在 React 中为多个孩子接受多个未知道具?
- python - 将正则表达式函数应用于熊猫数据框
- c# - 如何修复调用 GetAccessTokenForAppAsync 以获取导致 NullReferenceException 的令牌?