Jer*_*auw 10 lua loops readability
我有一个变量如下
local armies = {
[1] = "ARMY_1",
[2] = "ARMY_3",
[3] = "ARMY_6",
[4] = "ARMY_7",
}
Run Code Online (Sandbox Code Playgroud)
现在我想为每个值做一个动作.循环这些值的最佳方法是什么?我在互联网上找到的典型事情是这样的:
for i, armyName in pairs(armies) do
doStuffWithArmyName(armyName)
end
Run Code Online (Sandbox Code Playgroud)
我不喜欢它,因为它导致一个未使用的变量i.以下方法避免了这种情况,并且是我目前正在使用的方法:
for i in pairs(armies) do
doStuffWithArmyName(armies[i])
end
Run Code Online (Sandbox Code Playgroud)
然而,这仍然不像我想的那样可读和简单,因为这是迭代密钥然后使用密钥获取值(相当必要).我对这两种方法的另一个好处pairs就是需要.在这里循环的值是我可以控制的值,我希望它可以尽可能容易地循环.
如果我只关心这些值,有没有更好的方法来做这样的循环?有没有办法解决我列出的问题?
我正在使用Lua 5.0(对语言来说很新)
Yu *_*Hao 23
迭代数组的惯用方法是:
for _, armyName in ipairs(armies) do
doStuffWithArmyName(armyName)
end
Run Code Online (Sandbox Code Playgroud)
注意:
ipairs过pairs数组_占位符.如果由于某种原因,该_占位符仍然关注您,请创建自己的迭代器.Lua中的编程提供了一个例子:
function values(t)
local i = 0
return function() i = i + 1; return t[i] end
end
Run Code Online (Sandbox Code Playgroud)
用法:
for v in values(armies) do
print(v)
end
Run Code Online (Sandbox Code Playgroud)