Skip to content

4.2 - C闭包

当C函数被创建,它可能要关联上一些值,以创建一个C闭包(参见lua_pushcclosure);这些值被称为上值 upvalues,在调用函数的时候可以访问它们。

当C函数被调用,其上值处于特殊的伪索引上。这些伪索引由lua_upvalueindex宏创建。函数关联的第一个上值在lua_upvalueindex(1)索引上,以此类推。任意对lua_upvalueindex(n)的访问中,如果n大于当前函数的上值数量(但是不能大于256——闭包上值的最大数量加一),会产生一个可接受但无效的索引。

C闭包也可以更改其相关上值的值。