1.辅助库提供了一些便捷函数,方便在 C 中为 Lu a 编程。 基础 API 提供了 C 和 L ua 交互用的主要函数, 而辅助库则为一些常见的任务提供了高阶函数。
所有辅助库中的函数和类型都定义在头文件 lauxlib.h 中, 它们均带有前缀 luaL_。
辅助库中的所有函数都基于基础 API 实现。 故而它们并没有提供任何基础 API 实现不了的功能。 虽然如此,使用辅助库可以让你的代码更为健壮。
2.一些辅助库函数会在内部使用一些额外的栈空间。 当辅助库使用的栈空间少于五个时, 它们不去检查栈大小;而是简单的假设栈够用。
一些辅助库中的函数用于检查 C 函数的参数。 因为错误信息格式化为指代参数 (例如,"bad argument #1"), 你就不要把这些函数用于参数之外的值了。
如果检查无法通过, luaL_check* 这些函数一定会抛出错误。
3.设置给定活动记录中的局部变量的值。 参数 ar 与 n 和 lu a_getlocal 中的一样 ()。 lua_setlocal 把栈顶的值赋给变量然后返回变量的名字。 它会将值从栈顶弹出。
当索引大于活动局部变量的数量时,返回 NULL (什么也不弹出)。
lu a_setupvalue
const char *l ua_setupvalue (lua_State *L, int funcindex, int n);
4.设置闭包上值的值。 它把栈顶的值弹出并赋于上值并返回上值的名字。 参数 funcindex 与 n 和 lu a_getupvalue 中的一样 (参见 lu a_getupvalue )。
当索引大于上值的数量时,返回 NULL (什么也不弹出)。
lu a_upvalueid
void *lu a_upvalueid (lua_State *L, int funcindex, int n);
5.返回索引 funcindex 处的闭包中 编号为 n 的上值的一个唯一标识符。 参数 funcindex 与 n 和 lu a _getupvalue 中的一样 (参见 l ua_getupvalue )。 (但 n 不可以大于上值的数量)。
6.这些唯一标识符可用于检测不同的闭包是否共享了相同的上值。 共享同一个上值的 Lu a 闭包(即它们指的同一个外部局部变量) 会针对这个上值返回相同的标识。
lu a_upvaluejoin
void lu a_upvaluejoin (lua_State *L, int funcindex1, int n1, int funcindex2, int n2);
让索引 funcindex1 处的 L ua 闭包的第 n1 个上值 引用索引 funcindex2 处的 Lua 闭包的第 n2 个上值。