2022-02-10 · 学动漫、设计、电竞、电商、短视频、软件等
系统常用函数有许多,比如字符串函数,时间函数,文件函数等,
下面是常用的一些函数把指针 s 指向的长度为 len 的字符串压栈。 Lua 对这个字符串做一个内部副本(或是复用一个副本), 因此 s 处的内存在函数返回后,可以释放掉或是立刻重用于其它用途。 字符串内可以是任意二进制数据,包括零字符。
将指针 s 指向的零结尾的字符串压栈。 因此 s 处的内存在函数返回后,可以释放掉或是立刻重用于其它用途。
返回内部副本的指针。
如果 s 为 NULL,将 nil 压栈并返回 NULL
把 t[n] 的值压栈, 这里的 t 是指给定索引处的表。 这是一次直接访问;就是说,它不会触发元方法。
返回入栈值的类型。
lu a_rawgetp
int lu a_rawgetp (lua_State *L, int index, const void *p);
把 t[k] 的值压栈, 这里的 t 是指给定索引处的表, k 是指针 p 对应的轻量用户数据。 这是一次直接访问;就是说,它不会触发元方法。
返回给定索引处值的固有“长度”: 对于字符串,它指字符串的长度; 对于表;它指不触发元方法的情况下取长度操作('#')应得到的值; 对于用户数据,它指为该用户数据分配的内存块的大小; 对于其它值,它为 0 。
l ua_rawset
void lua_rawset (lua_State *L, int index);
类似于 lua_settable , 但是是做一次直接赋值(不触发元方法)。
等价于 t[k] = v , 这里的 t 是指给定索引处的表, k 是指针 p 对应的轻量用户数据。 而 v 是栈顶的值。
这个函数会将值弹出栈。 赋值是直接的;即不会触发元方法。
用到的读取器函数, 每次它需要一块新的代码块的时候, lua_load 就调用读取器, 每次都会传入一个参数 data 。 读取器需要返回含有新的代码块的一块内存的指针, 并把 size 设为这块内存的大小。 内存块必须在下一次函数被调用之前一直存在。 读取器可以通过返回 NULL 或设 size 为 0 来指示代码块结束。 读取器可能返回多个块,每个块可以有任意的大于零的尺寸。
把 t[k] 的值压栈, 这里的 t 是指给定索引处的表, k 是指针 p 对应的轻量用户数据。 这是一次直接访问;就是说,它不会触发元方法。
返回给定索引处值的固有“长度”: 对于字符串,它指字符串的长度; 对于表;它指不触发元方法的情况下取长度操作('#')应得到的值; 对于用户数据,它指为该用户数据分配的内存块的大小; 对于其它值,它为 0 。
这个函数会将值弹出栈。 赋值是直接的;即不会触发元方法。
用到的读取器函数, 每次它需要一块新的代码块的时候, lua_load 就调用读取器, 每次都会传入一个参数 data 。 读取器需要返回含有新的代码块的一块内存的指针, 并把 size 设为这块内存的大小。 内存块必须在下一次函数被调用之前一直存在。 读取器可以通过返回 NULL 或设 size 为 0 来指示代码块结束。 读取器可能返回多个块,每个块可以有任意的大于零的尺寸。