Lua语言学习:迭代器

迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。
更新于: 2022-01-20 06:24:09

泛型 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

参考