通用循环

迭代器使用一种称为循环泛型for 循环

for 循环的通用形式使用三个参数:

  1. 在需要下一个值时调用的迭代器函数。它接收不变状态和控制变量作为参数。返回 nil 信号终止。
  2. 不变的状态是,迭代期间不发生变化的值。它通常是迭代器的主题,例如表,字符串或用户数据。
  3. 控制变量代表用于迭代的初始值。

我们可以编写一个 for 循环来使用下一个函数迭代表中的所有键值对。

local t = {a=1, b=2, c=3, d=4, e=5}

-- next is the iterator function
-- t is the invariant state
-- nil is the control variable (calling next with a nil gets the first key)
for key, value in next, t, nil do
  -- key is the new value for the control variable
  print(key, value) 
  -- Lua calls: next(t, key)  
end