迭代器就是一种可以遍历一种集合中所有元素的机制。在Lua中,通常用closure来实现迭代器。因为closure可以访问其外部环境中的局部变量(被称作non-local variable),所以可以通过这个记住每次遍历到的位置。而由此我们也可以想到,一个closure结构通常涉及到两个函数,一个closure本身以及创建closure的工厂函数。
#一个简单的迭代器
1 2 3 4
| function values(t) local i = 0 return function() i = i + 1; return t[i] end end
|
这个迭代器返回每个元素的值。