lua里面的函数,和c语言的函数其实是不同的概念。在lua里通常讲的函数,其实是指闭包(closure)。
函数只是闭包的原形(prototype)声明。为了方便理解,所以通常讲函数。
lua里的函数是一个具有词法定界的第一类值。
第一类值是函数能够存储在变量中,存储在表中,能够作为函数的参数传递,能够作为函数的返回值。
词法定界是指一个嵌套的函数能够访问外部函数的变量。
lua的闭包结构如图:
GC:垃圾回收相关。
prototype:一个指向原形的指针。原形中包括函数代码,变量,调试信息等。
upvalue:非局部变量。
可以简单理解,闭包是指函数加上函数的upvalue。
原文:http://www.cnblogs.com/yao2yaoblog/p/6413190.html