Lua 迭代器

泛型 for 迭代器

array = {"Lua", "Tutorial"}

for key,value in ipairs(array) 
do
   print(key, value)
end

输出

Lua
Tutorial

无状态的迭代器

function square(iteratorMaxCount,currentNumber)
   if currentNumber<iteratorMaxCount
   then
      currentNumber = currentNumber+1
   return currentNumber, currentNumber*currentNumber
   end
end

for i,n in square,3,0
do
   print(i,n)
end

输出

1    1
2    4
3    9

多状态的迭代器

array = {"Lua", "Tutorial"}

function elementIterator (collection)
   local index = 0
   local count = #collection
   -- 闭包函数
   return function ()
      index = index + 1
      if index <= count
      then
         --  返回迭代器的当前元素
         return collection[index]
      end
   end
end

for element in elementIterator(array)
do
   print(element)
end

输出

Lua
Tutorial