次のような変数があります
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
ただし、これは、キーを繰り返し処理し、キーを使用して(命令的に)値を取得するため、読みやすく簡単ではありません。私が両方のアプローチで得たもう1つの恩恵は、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