在 Lua 中,迭代器(iterator)是一种用于遍历集合元素的机制。迭代器提供了一种通用的方式来访问数据结构中的元素,比如数组或表。Lua 提供了 ipairs 和 pairs 两种迭代器,分别用于按照数组索引和按照键值对遍历表。

使用 ipairs 迭代器

ipairs 迭代器用于按照数组索引遍历数组或类似数组的表。
-- 使用 ipairs 迭代器遍历数组
local myArray = {10, 20, 30, 40, 50}

for index, value in ipairs(myArray) do
    print(index, value)
end

使用 pairs 迭代器

pairs 迭代器用于按照键值对遍历表,包括数组和非数组部分。
-- 使用 pairs 迭代器遍历表
local myTable = {name = "Alice", age = 25, city = "Wonderland"}

for key, value in pairs(myTable) do
    print(key, value)
end

自定义迭代器

你也可以自定义迭代器,通过一个函数返回下一个元素的值,以及一个状态,来实现更复杂的迭代逻辑。
-- 自定义迭代器
function customIterator(collection)
    local index = 0
    local size = #collection

    return function()
        index = index + 1
        if index <= size then
            return collection[index]
        end
    end
end

-- 使用自定义迭代器遍历数组
local myArray = {100, 200, 300, 400, 500}
local iter = customIterator(myArray)

while true do
    local value = iter()
    if not value then
        break
    end
    print(value)
end

这是一个简单的自定义迭代器的例子。迭代器函数返回一个闭包,用于维护迭代状态,并在每次调用时返回下一个元素的值。

总体而言,迭代器是 Lua 中用于遍历集合的强大机制,可以根据需要选择合适的迭代器进行遍历。


转载请注明出处:http://www.pingtaimeng.com/article/detail/13701/Lua