lua_istable 原型: int lua_istable (lua_State *L, int index); 描述: 判断index处元素是否为一个table , 如果是返回1,否则返回0. lua_pushglobaltable 原型: void lua_pushglobaltable (lua_State *L); 描述: 将lua的全局表放在栈顶. luaL_newmetatable 原型: int luaL_newmetatable (lua_State *L...
C API 遍历 Table 1lua_getglobal(L, t);2intindex =lua_gettop(L);3lua_pushnil(L);4while(lua_next(L, index)) {5/*此时栈上 -1 处为 value, -2 处为 key*/6lua_pop(L,1);7} lua_next函数针对 -2 处(参数指定)的 Table 进行遍历。弹出 -1 处(栈顶)的值作为上一个 key(为 nil ...
C API 遍历 Tablelua_getglobal(L, t); lua_pushnil(L); while (lua_next(L, -2)) { /* 此时栈上 -1 处为 value, -2 处为 key */ lua_pop(L, 1); } lua_next 函数针对 -2 处(参数指定)的 Table 进行遍历。弹出 -1 处(栈顶)的值作为上一个 key(为 nil 时视为请求首个 key),压...
lua_getfield(L, 1, "productName");它提供了我们在table中找到key对应的value值,并把value值放置栈顶的方法。 lua_getfield(L,table在该栈的索引,key的名称) 这种方法更直观地获取一个table中的元素,但由于没有进行清栈行为,因此会存在内存的问题,所以改方法最好就用于元素少的时候使用。 例子: int func_...
Lua 通过一个虚拟栈与 C 的交互,正数索引自底向上取值,负数索引自顶向下取值。 Lua 中的 Table(表)结构可以使用任何数据作为 key 进行取值。使用 C API 访问 Table 中的元素有两种方法: 复制代码代码如下: lua_getglobal(L, t); lua_pushinteger(L, k); -- 这里可以换成其它类型的 lua_pushXXXX(L, ...
lua_createtable void lua_createtable(lua_State* L, int narr, int nrec) 说明:创建一个新的空表并将其压入堆栈。 参数: L:Lua 状态(Lua 虚拟机实例)的指针。 narr:预分配的数组部分的大小。 nrec:预分配的哈希部分的大小。 最佳实践:使用该函数可以在 Lua 脚本和 C 代码中创建空表,以便进行表操作和...
这样,helloTable变量就被存放到栈顶。 可我们并不是要取table变量,因为C++中是无法识别Lua的table类型的,所以我们要取得table中具体的值,也就是name和IQ的值。 lua_gettable函数 有一个和lua_getglobal类似的函数,叫做lua_gettable,顾名思义,它是用来取得table相关的数据的。
table是一个关联数组, 也就是说,这个数组不仅仅以数字做索引,除了nil和 NaN 之外的所有 Lua 值 都可以做索引。(Not a Number是一个特殊的数字,它用于表示未定义或表示不了的运算结果,比如0/0。) 表可以是异构的; 也就是说,表内可以包含任何类型的值(nil除外)。 任何键的值若为nil就不会被记入表结构内部...
lua_Number lua_tonumber (lua_State *L, int index); const void *lua_topointer (lua_State *L, int index); const char *lua_tostring (lua_State *L, int index); void *lua_touserdata (lua_State *L, int index); --string类型返回字符串长度,table类型返回操作符'#'等同的结果,userdata类型...
接下来我们看一下具体的创建代码, lua c api相关的代码, 整体实现配合注释比较好理解, 这里不逐行展开了. 代码语言:javascript 代码运行次数:0 运行 AI代码解释 voidLuaCFunctions::CreateClassContentTable(lua_State*L,constrstudio::reflection::MetaClass&cls,conststd::string_view name,conststd::string_view ...