程序开发中的函数和类型怎么解释?
2个回答
2021-07-13 · 学动漫、设计、电竞、电商、短视频、软件等
关注
展开全部
这里我们按字母表次序列出了辅助库中的所有函数和类型。
字符串缓存 的类型。
字符串缓存可以让 C 代码分段构造一个 Lu a 字符串。 使用模式如下:
首先定义一个类型为 lu aL_Buffer 的变量 b。
调用 lu aL_buffinit(L, &b) 初始化它。
然后调用 luaL_add* 这组函数向其添加字符串片断。
最后调用 lua L_pushresult(&b) 。 最后这次调用会在栈顶留下最终的字符串。
如果你预先知道结果串的长度, 你可以这样使用缓存:
首先定义一个类型为 l uaL_Buffer 的变量 b。
然后调用 luaL_buffinitsize(L, &b, sz) 预分配 sz 大小的空间。
接着将字符串复制入这个空间。
最后调用 lua L_pushresultsize(&b, sz), 这里的 sz 指已经复制到缓存内的字符串长度。
一般的操作过程中,字符串缓存会使用不定量的栈槽。 因此,在使用缓存中,你不能假定目前栈顶在哪。 在对缓存操作的函数调用间,你都可以使用栈,只需要保证栈平衡即可; 即,在你做一次缓存操作调用时,当时的栈位置和上次调用缓存操作后的位置相同。 (对于 lu aL_addvalue 是个唯一的例外。) 在调用完 luaL_pushresult 后, 栈会恢复到缓存初始化时的位置上,并在顶部压入最终的字符串。
调用一个元方法。
如果在索引 obj 处的对象有元表, 且元表有域 e 。 这个函数会以该对象为参数调用这个域。 这种情况下,函数返回真并将调用返回值压栈。 如果那个位置没有元表,或没有对应的元方法, 此函数返回假(并不会将任何东西压栈)。
检查函数的第 arg 个参数是否是一个 字符串,并返回该字符串; 如果 l 不为 NULL , 将字符串的长度填入 *l。
这个函数使用 lua_tolstring 来获取结果。 所以该函数有可能引发的转换都同样有效。
辅助库中的所有函数都基于基础 API 实现。 故而它们并没有提供任何基础 API 实现不了的功能。 虽然如此,使用辅助库可以让你的代码更为健壮。
一些辅助库函数会在内部使用一些额外的栈空间。 当辅助库使用的栈空间少于五个时, 它们不去检查栈大小;而是简单的假设栈够用。
一些辅助库中的函数用于检查 C 函数的参数。 因为错误信息格式化为指代参数 (例如,"bad argument #1"), 你就不要把这些函数用于参数之外的值了。
字符串缓存 的类型。
字符串缓存可以让 C 代码分段构造一个 Lu a 字符串。 使用模式如下:
首先定义一个类型为 lu aL_Buffer 的变量 b。
调用 lu aL_buffinit(L, &b) 初始化它。
然后调用 luaL_add* 这组函数向其添加字符串片断。
最后调用 lua L_pushresult(&b) 。 最后这次调用会在栈顶留下最终的字符串。
如果你预先知道结果串的长度, 你可以这样使用缓存:
首先定义一个类型为 l uaL_Buffer 的变量 b。
然后调用 luaL_buffinitsize(L, &b, sz) 预分配 sz 大小的空间。
接着将字符串复制入这个空间。
最后调用 lua L_pushresultsize(&b, sz), 这里的 sz 指已经复制到缓存内的字符串长度。
一般的操作过程中,字符串缓存会使用不定量的栈槽。 因此,在使用缓存中,你不能假定目前栈顶在哪。 在对缓存操作的函数调用间,你都可以使用栈,只需要保证栈平衡即可; 即,在你做一次缓存操作调用时,当时的栈位置和上次调用缓存操作后的位置相同。 (对于 lu aL_addvalue 是个唯一的例外。) 在调用完 luaL_pushresult 后, 栈会恢复到缓存初始化时的位置上,并在顶部压入最终的字符串。
调用一个元方法。
如果在索引 obj 处的对象有元表, 且元表有域 e 。 这个函数会以该对象为参数调用这个域。 这种情况下,函数返回真并将调用返回值压栈。 如果那个位置没有元表,或没有对应的元方法, 此函数返回假(并不会将任何东西压栈)。
检查函数的第 arg 个参数是否是一个 字符串,并返回该字符串; 如果 l 不为 NULL , 将字符串的长度填入 *l。
这个函数使用 lua_tolstring 来获取结果。 所以该函数有可能引发的转换都同样有效。
辅助库中的所有函数都基于基础 API 实现。 故而它们并没有提供任何基础 API 实现不了的功能。 虽然如此,使用辅助库可以让你的代码更为健壮。
一些辅助库函数会在内部使用一些额外的栈空间。 当辅助库使用的栈空间少于五个时, 它们不去检查栈大小;而是简单的假设栈够用。
一些辅助库中的函数用于检查 C 函数的参数。 因为错误信息格式化为指代参数 (例如,"bad argument #1"), 你就不要把这些函数用于参数之外的值了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询