Lua - 数组迭代



在 Lua 中,我们可以使用 `pairs()` 和 `ipairs()` 函数迭代数组。这两个函数都返回键值对,其中键是元素的索引,值是数组中该索引处存储的元素。

语法

for key,value in ipairs(array) do print(key,value) end
for key,value in pairs(array) do print(key,value) end
  • - 索引

  • - 存储在数组相应索引中的值

  • 数组 - 数组

示例 - 使用 `pairs()` 方法

创建一个名为 main.lua 的新源文件,并将以下代码粘贴到其中以使用 `pairs()` 方法迭代数组。

main.lua

array = {"a", "b", "c", "d", "e", "f"}

array["last"] = "end"
for key,value in pairs(array) 
do 
   print(key,value) 
end

输出

1	a
2	b
3	c
4	d
5	e
6	f
last	end

示例 - 使用 `ipairs()` 方法

创建一个名为 main.lua 的新源文件,并将以下代码粘贴到其中以使用 `ipairs()` 方法迭代数组。

main.lua

array = {"a", "b", "c", "d", "e", "f"}

array["last"] = "end"
for key,value in ipairs(array) 
do 
   print(key,value) 
end

输出

1	a
2	b
3	c
4	d
5	e
6	f

您可以注意到,如果索引是非数字,则 `ipairs` 会拒绝该条目。

示例 - 使用自定义迭代器

我们可以创建自己的迭代器来迭代数组。考虑以下返回迭代器的函数。

function getValues(array)
  local i = 0
  return function() i = i + 1; return array[i] end
end

我们可以在 `for` 循环中使用此函数,如下所示。

for value in getValues(array) 
do 
   print(value)
end

以下是完整的代码。

main.lua

function getValues(array)
  local i = 0
  return function() i = i + 1; return array[i] end
end

array = {"a", "b", "c", "d", "e", "f"}

for value in getValues(array) 
do 
   print(value) 
end

输出

a
b
c
d
e
f
广告