Lua中如何遍历数组元素?

2026-04-01 20:091阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计482个文字,预计阅读时间需要2分钟。

Lua中如何遍历数组元素?

我有一个变量如下+local+armies+=+{+[1]+=+”ARMY_1”+,+[2]+=+”ARMY_3”+,+[3]+=+”ARMY_6”+,+[4]+=+”ARMY_7”+,+}+。现在我想为每个值执行一个动作。遍历这些值的最佳方法是什么?我在互联网上找到的典型事件是这样的:

我有一个变量如下

local armies = { [1] = "ARMY_1", [2] = "ARMY_3", [3] = "ARMY_6", [4] = "ARMY_7", }

现在我想为每个值做一个动作.循环这些值的最佳方法是什么?我在互联网上找到的典型事情是这样的:

Lua中如何遍历数组元素?

for i, armyName in pairs(armies) do doStuffWithArmyName(armyName) end

我不喜欢它,因为它导致一个未使用的变量i.以下方法避免了这种情况,并且是我目前正在使用的方法:

for i in pairs(armies) do doStuffWithArmyName(armies[i]) end

然而,这仍然不像我想的那样可读和简单,因为这是迭代密钥然后使用密钥获取值(相当必要).我对这两种方法的另一个好处是需要配对.在这里循环的值是我可以控制的值,我希望它可以尽可能容易地循环.

如果我只关心这些值,有没有更好的方法来做这样的循环?有没有办法解决我列出的问题?

我正在使用Lua 5.0(对语言来说很新)

迭代数组的惯用方法是:

for _, armyName in ipairs(armies) do doStuffWithArmyName(armyName) end

注意:

>对阵列使用ipairs成对
>如果密钥不是您感兴趣的密钥,请使用_作为占位符.

如果由于某种原因,_占位符仍然关注您,请创建自己的迭代器. 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

本文共计482个文字,预计阅读时间需要2分钟。

Lua中如何遍历数组元素?

我有一个变量如下+local+armies+=+{+[1]+=+”ARMY_1”+,+[2]+=+”ARMY_3”+,+[3]+=+”ARMY_6”+,+[4]+=+”ARMY_7”+,+}+。现在我想为每个值执行一个动作。遍历这些值的最佳方法是什么?我在互联网上找到的典型事件是这样的:

我有一个变量如下

local armies = { [1] = "ARMY_1", [2] = "ARMY_3", [3] = "ARMY_6", [4] = "ARMY_7", }

现在我想为每个值做一个动作.循环这些值的最佳方法是什么?我在互联网上找到的典型事情是这样的:

Lua中如何遍历数组元素?

for i, armyName in pairs(armies) do doStuffWithArmyName(armyName) end

我不喜欢它,因为它导致一个未使用的变量i.以下方法避免了这种情况,并且是我目前正在使用的方法:

for i in pairs(armies) do doStuffWithArmyName(armies[i]) end

然而,这仍然不像我想的那样可读和简单,因为这是迭代密钥然后使用密钥获取值(相当必要).我对这两种方法的另一个好处是需要配对.在这里循环的值是我可以控制的值,我希望它可以尽可能容易地循环.

如果我只关心这些值,有没有更好的方法来做这样的循环?有没有办法解决我列出的问题?

我正在使用Lua 5.0(对语言来说很新)

迭代数组的惯用方法是:

for _, armyName in ipairs(armies) do doStuffWithArmyName(armyName) end

注意:

>对阵列使用ipairs成对
>如果密钥不是您感兴趣的密钥,请使用_作为占位符.

如果由于某种原因,_占位符仍然关注您,请创建自己的迭代器. 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