1、迭代器和闭包
迭代器是一个允许在集合元素的迭代。lua中用函数来表示迭代。迭代器需要记录一些状态。闭包提供了一些机制来记录状态。
闭包是可以访问一个或者多个来自于闭包环境的本地变量。变量用于在连续调用闭包时保持其值。闭包涉及到两个函数,一个是闭包本身,另一个是创建闭包及本地变量的工厂函数。
2、通用for语义
通用for保持三个变量:迭代函数,不变状态,控制变量。其语法为
for var-list in exp-list do
body
end
var-list是一个或者多个变量名列表,由分号分割。exp-list是一个或者多个表达式的列表,也是由分号分割。通常表达式列表只包含一个元素,是对迭代工厂方法的调用。
var-list列表中的第一个为控制变量,其不会为nil。
for做的第一件事是计算in之后的表达式,返回由for保持的三个值:迭代函数,不变状态,控制变量的初始值。初始化后,for调用两个参数的迭代函数(不变状态和控制变量)。