Lua语言学习:迭代器
迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。
泛型 for 迭代器
泛型 for 在自己内部保存迭代函数,实际上它保存三个值:迭代函数、状态常量、控制变量。
遍历数组
array = {"Google", "Runoob"}
for key,value in ipairs(array)
do
print(key, value)
end
代码解释
- for 需要3个参数 key/value, 迭代器 ipairs(array)
- ipairs 为 lua 自带的的迭代器
在Lua中我们常常使用函数来描述迭代器
每次调用该函数就返回集合的下一个元素。
Lua 的迭代器包含以下两种类型:
- 无状态的迭代器
- 多状态的迭代器
-- 无状态迭代器的实现
function square(total, i)
if i < total then
i = i + 1
return i, i * i
end
end
for i, n in square, 3, 0 do
print(i, n)
end
-- 多状态迭代器的实现
local array = {"Google", "js.work"}
local function kvIterator(collection)
local index = 0
local count = #collection
-- 闭包函数
return function()
index = index + 1
if index <= count then
-- 返回迭代器的当前元素
return index, collection[index]
end
end
end
for key, element in kvIterator(array) do
print(key, element)
end