Lua 数组怎么遍历迭代?

文章导读
Previous Quiz Next In Lua 中,我们可以使用 pairs() 和 ipairs() 函数来遍历数组。这两个函数都会返回键值对,其中键是元素的索引,值是数组中该索引处存储的元素。
📋 目录
  1. A 语法
  2. B 示例 - 使用 pairs() 方法
  3. C 示例 - 使用 ipairs() 方法
  4. D 示例 - 使用自定义迭代器
A A

Lua - 遍历数组



Previous
Quiz
Next

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

语法

-- 使用 ipairs() 方法遍历数组
for key,value in ipairs(array) do print(key,value) end
-- 使用 pairs() 方法遍历数组
for key,value in pairs(array) do print(key,value) end
  • key− 索引

  • value− 数组中对应索引处存储的值

  • array− 数组

示例 - 使用 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