程序开发中各类有用的函数方法都有哪些?

 我来答
重庆新华电脑学校
2021-07-05 · 学动漫、设计、电竞、电商、短视频、软件等
重庆新华电脑学校
重庆新华电脑学校隶属于新华教育集团,经重庆市人力资源和社会保障局审批成立的重庆地区大规模IT人才教育基地。是国家信息化教育全国示范基地,中国IT教育十大影响力品牌学校。
向TA提问
展开全部
常用的函数方法有很多,比如字符串函数,时间函数,文件函数,下面是列举的常用方法。
以保护模式调用一个函数。
nargs 和 nresults 的含义与 lu a_call 中的相同。 如果在调用过程中没有发生错误, l ua_pcall 的行为和 l ua_call 完全一致。 但是,如果有错误发生的话, lu a_pcall 会捕获它, 然后把唯一的值(错误消息)压栈,然后返回错误码。 同 lu a_call 一样, l ua_pcall 总是把函数本身和它的参数从栈上移除。
如果 msgh 是 0 , 返回在栈顶的错误消息就和原始错误消息完全一致。 否则, msgh 就被当成是 错误处理函数 在栈上的索引位置。 (在当前的实现里,这个索引不能是伪索引。) 在发生运行时错误时, 这个函数会被调用而参数就是错误消息。 错误处理函数的返回值将被 lu a_pcall 作为错误消息返回在堆栈上。
典型的用法中,错误处理函数被用来给错误消息加上更多的调试信息, 比如栈跟踪信息。 这些信息在 lua_pcall 返回后, 由于栈已经展开,所以收集不到了。
lu a_pcall 函数会返回下列常数 (定义在 lu a.h 内)中的一个:
LUA_OK (0): 成功。
LUA_ERRRUN: 运行时错误。
LUA_ERRMEM: 内存分配错误。对于这种错,Lua 不会调用错误处理函数。
LUA_ERRERR: 在运行错误处理函数时发生的错误。
LUA_ERRGCMM: 在运行 __gc 元方法时发生的错误。 (这个错误和被调用的函数无关。)
lu a_pcallk
这个函数的行为和 lua_pcall 完全一致,只不过它还允许被调用的函数让出 )。
lu a_pop
[-n, +0, –]
void lu a_pop (lua_State *L, int n);
从栈中弹出 n 个元素。
lua_pushboolean
[-0, +1, –]
void l ua_pushboolean (lua_State *L, int b);
把 b 作为一个布尔量压栈。
lua_pushcclosure
[-n, +1, e]
void l ua_pushcclosure (lu a_State *L, lua_CFunction fn, int n);
把一个新的 C 闭包压栈。
当创建了一个 C 函数后, 你可以给它关联一些值, 这就是在创建一个 C 闭包(); 接下来无论函数何时被调用,这些值都可以被这个函数访问到。 为了将一些值关联到一个 C 函数上, 首先这些值需要先被压入堆栈(如果有多个值,第一个先压)。 接下来调用 lua_pushcclosure 来创建出闭包并把这个 C 函数压到栈上。 参数 n 告之函数有多少个值需要关联到函数上。 lua_pushcclosure 也会把这些值从栈上弹出。
n 的最大值是 255 。
当 n 为零时, 这个函数将创建出一个 轻量 C 函数, 它就是一个指向 C 函数的指针。 这种情况下,不可能抛出内存错误。
lua_pushcfunction
[-0, +1, –]
void lua_pushcfunction (lua_State *L, lua_CFunction f);
将一个 C 函数压栈。 这个函数接收一个 C 函数指针, 并将一个类型为 function 的 Lua 值压栈。 当这个栈顶的值被调用时,将触发对应的 C 函数。
注册到 Lua 中的任何函数都必须遵循正确的协议来接收参数和返回值 (lua_CFunction )。
支滥诜站105

2022-06-24 · 超过81用户采纳过TA的回答
知道小有建树答主
回答量:957
采纳率:4%
帮助的人:24.7万
展开全部
创建一条新线程,并将其压栈, 并返回维护这个线程的 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 ,这个指针将在每次调用分配器时被转入。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
程序小冰

2021-12-04 · 程序爱好者,与诸位共同进步
程序小冰
采纳数:340 获赞数:480

向TA提问 私信TA
展开全部
最常用的还是输入输出函数以及操作数据的math类里面的函数,还有数组排序以及字符串截取方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
酪泵丫史荚感BU

2022-06-25 · 贡献了超过763个回答
知道答主
回答量:763
采纳率:6%
帮助的人:29.8万
展开全部
创建一条新线程,并将其压栈, 并返回维护这个线程的 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 ,这个指针将在每次调用分配器时被转入。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式