程序开发中各种常用的方法都有哪些?
时间:2021-7-6 12:27 作者:!admin 分类: 无
程序开发中各种常用的方法都有哪些?
创建一条新线程,并将其压栈, 并返回维护这个线程的 lua_State 指针。 这个函数返回的新线程共享原线程的全局环境, 但是它有独立的运行栈。
没有显式的函数可以用来关闭或销毁掉一个线程。 线程跟其它 Lua 对象一样是垃圾收集的条目之一。
当给定索引的值是一个数字,或是一个可转换为数字的字符串时,返回 1 ,否则返回 0 。
lua_isstring
[-0, +0, –]
int lua_isstring (lua_State L, int index);
当给定索引的值是一个字符串或是一个数字 (数字总能转换成字符串)时,返回 1 ,否则返回 0 。
lua_istable
[-0, +0, –]
int lua_istable (lua_State L, int index);
当给定索引的值是一张表时,返回 1 ,否则返回 0 。
lua_isthread
[-0, +0, –]
int lua_isthread (lua_State L, int index);
当给定索引的值是一条线程时,返回 1 ,否则返回 0 。
lua_isuserdata
[-0, +0, –]
int lua_isuserdata (lua_State L, int index);
当给定索引的值是一个用户数据(无论是完全的还是轻量的)时, 返回 1 ,否则返回 0 。
lua_isyieldable
[-0, +0, –]
int lua_isyieldable (lua_State L);
如果给定的协程可以让出,返回 1 ,否则返回 0 。
lua_KContext
typedef ... lua_KContext;
延续函数上下文参数的类型。 这一定是一个数字类型。 当有 intptr_t 时,被定义为 intptr_t , 因此它也可以保存指针。 否则,它被定义为 ptrdiff_t。
lua_KFunction
typedef int (lua_KFunction) (lua_State L, int status, lua_KContext ctx);
延续函数的类型
加载一段 Lua 代码块,但不运行它。 如果没有错误, lua_load 把一个编译好的代码块作为一个 Lua 函数压到栈顶。 否则,压入错误消息。
lua_load 的返回值可以是:
LUA_OK: 没有错误;
LUA_ERRSYNTAX: 在预编译时碰到语法错误;
LUA_ERRMEM: 内存分配错误;
LUA_ERRGCMM: 在运行 __gc 元方法时出错了。 (这个错误和代码块加载过程无关,它是由垃圾收集器引发的。)
lua_load 函数使用一个用户提供的 reader 函数来读取代码块()。 data 参数会被传入 reader 函数。
chunkname 这个参数可以赋予代码块一个名字, 这个名字被用于出错信息和调试信息()。
lua_load 会自动检测代码块是文本的还是二进制的, 然后做对应的加载操作(参见程序 luac )。 字符串 mode 的作用和函数 load 一致。 它还可以是 NULL 等价于字符串 "bt"。
lua_load 的内部会使用栈, 因此 reader 函数必须永远在每次返回时保留栈的原样。
如果返回的函数有上值, 第一个上值会被设置为 保存在注册表(5) LUA_RIDX_GLOBALS 索引处的全局环境。 在加载主代码块时,这个上值是 _ENV 变量()。 其它上值均被初始化为 nil。
lua_newstate
[-0, +0, –]
lua_State lua_newstate (lua_Alloc f, void *ud);
创建一个运行在新的独立的状态机中的线程。 如果无法创建线程或状态机(由于内存有限)则返回 NULL。 参数 f 是一个分配器函数; Lua 将通过这个函数做状态机内所有的内存分配操作。 第二个参数 ud ,这个指针将在每次调用分配器时被转入。