Lua - 遍历数组
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