遍历 Lua 中的数组值
Looping over array values in Lua
我有一个变量如下
local armies = {
[1] = "ARMY_1",
[2] = "ARMY_3",
[3] = "ARMY_6",
[4] = "ARMY_7",
}
现在我想为每个值做一个动作。遍历值的最佳方法是什么?我在互联网上找到的典型内容是:
for i, armyName in pairs(armies) do
doStuffWithArmyName(armyName)
end
我不喜欢这样,因为它会导致未使用的变量 i
。以下方法避免了这种情况,也是我目前使用的方法:
for i in pairs(armies) do
doStuffWithArmyName(armies[i])
end
然而,这仍然不像我想要的那样可读和简单,因为这是在键上迭代,然后使用键获取值(相当命令式)。我对这两种方法的另一个好处是需要 pairs
。在这里循环的值是我可以控制的值,我希望它可以尽可能容易地循环。
如果我只关心值,是否有更好的方法来执行这样的循环?有没有办法解决我列出的问题?
我正在使用 Lua 5.0(我对这门语言还很陌生)
迭代数组的惯用方法是:
for _, armyName in ipairs(armies) do
doStuffWithArmyName(armyName)
end
注意:
- 对数组使用
ipairs
而不是 pairs
- 如果密钥不是您感兴趣的,请使用
_
作为占位符。
如果出于某种原因,_
占位符仍然与您有关,请制作您自己的迭代器。 Lua中的编程提供了一个例子:
function values(t)
local i = 0
return function() i = i + 1; return t[i] end
end
用法:
for v in values(armies) do
print(v)
end
我有一个变量如下
local armies = {
[1] = "ARMY_1",
[2] = "ARMY_3",
[3] = "ARMY_6",
[4] = "ARMY_7",
}
现在我想为每个值做一个动作。遍历值的最佳方法是什么?我在互联网上找到的典型内容是:
for i, armyName in pairs(armies) do
doStuffWithArmyName(armyName)
end
我不喜欢这样,因为它会导致未使用的变量 i
。以下方法避免了这种情况,也是我目前使用的方法:
for i in pairs(armies) do
doStuffWithArmyName(armies[i])
end
然而,这仍然不像我想要的那样可读和简单,因为这是在键上迭代,然后使用键获取值(相当命令式)。我对这两种方法的另一个好处是需要 pairs
。在这里循环的值是我可以控制的值,我希望它可以尽可能容易地循环。
如果我只关心值,是否有更好的方法来执行这样的循环?有没有办法解决我列出的问题?
我正在使用 Lua 5.0(我对这门语言还很陌生)
迭代数组的惯用方法是:
for _, armyName in ipairs(armies) do
doStuffWithArmyName(armyName)
end
注意:
- 对数组使用
ipairs
而不是pairs
- 如果密钥不是您感兴趣的,请使用
_
作为占位符。
如果出于某种原因,_
占位符仍然与您有关,请制作您自己的迭代器。 Lua中的编程提供了一个例子:
function values(t)
local i = 0
return function() i = i + 1; return t[i] end
end
用法:
for v in values(armies) do
print(v)
end