闭包Closure

上一章介绍了函数,而Lua语言中所有的函数其实都是闭包Closure。本章就介绍闭包。

所谓闭包,就是函数原型关联一些变量。在Lua中,这些关联的变量称之为Upvalue。如果你了解Rust中的闭包,那么按照《Rust程序设计语言》中的说法是“捕获环境”,跟“关联变量”是一个意思。所以Upvalue是理解和实现闭包的根本。

本章接下来的第1节介绍Upvalue的最基本的概念;后面第2,3节介绍Upvalue的重要特性,逃逸,这也是使得闭包真正强大的原因;第4节介绍对应Rust函数的Rust闭包。再后面的第5,6两节分别是闭包和Upvalue的两个应用场景。