4.4 C 闭包

当 C 函数被创建出来,我们有可能会把一些值关联在一起,也就是创建一个 C 闭包(参见 lua_pushcclosure);这些被关联起来的值被叫做 上值 ,它们可以在函数被调用的时候访问的到。

无论何时去调用 C 函数,函数的上值都可以用伪索引定位。我们可以用lua_upvalueindex这个宏来生成这些伪索引。第一个关联到函数的值放在luaupvalueindex(1) 位置处,依此类推。 使用 lua_upvalueindex(n) 时,若 _n 大于当前函数的总上值个数(但不可以大于 256)会产生一个可接受的但无效的索引。