Upvalue是Lua不同于C/C++的特有属性,需要结合代码仔细体会。每次闭包的成功调用后这些外部局部变量都保存他们的值(状态)。当然如果要创建一个闭包必须要创建其外部局部变量。所以一个典型的闭包的结构包含两个函数:一个是闭包自己;另一个是工厂。迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,也就是他知道来自于哪里和将要前往哪里。闭包提供的机制可以很容易实现这个任务。

Lua进阶教程之闭包函数、元表实例介绍

Lua进阶教程之闭包函数、元表实例介绍

Lua进阶教程之闭包函数、元表实例介绍