lua_pushstring(L, "php"); // 将要赋值的结果压入栈 lua_rawseti(L, -2, 4); // 赋值操作 -->lua_rawseti用法 lua_pushstring(L, "swift"); // 将要赋值的结果压入栈 lua_rawseti(L, -2, 8); // 赋值操作 -->lua_rawseti用法 lua_getglobal(L, "func_printarray");// 改变之后再调用打...
首先 你函数名多打了个i 应该是lua_rawset lua的表 如果带有 __newindex 原表的话 在给表的值赋值的时候会按照原表规定的方法执行函数,而不是走普通的赋值路线 此时如果需要给表内的值赋值的话 只能通过这个函数赋值 函数名之前带有lua_ 表示这个是在宿主语言里操作的 比如C调用lua时 直接带有...
然后对要传递的数组进行遍历,并通过lua_rawseti方法将元素值设置到Table中。如: 通过上面的代码就可以把一个数组传递给arrayVal变量。值得注意的是:lua_rawseti方法表示要栈顶的元素设置给指定的Table对象的指定索引。其中的第二个参数是指Table对象在栈中的位置,第三个参数是表示在Table中的索引,一般索引是从1开始...
///这里可以看到如果再次unref的话t[ref]就保存就的是上上一次的key的值。 lua_rawseti(L, t, ref); /* t[ref] = t[FREELIST_REF] */ ///将ref压入栈 lua_pushinteger(L, ref); ///设置t[FREELIST_REF]为ref。 lua_rawseti(L, t, FREELIST_REF); /* t[FREELIST_REF] = ref */ } ...
void lua_rawseti (lua_State *L, int index, int key); 1. 2. 这两个函数后面两个参数的意思分别是:index(table在栈中的索引),key(table中数组的索引,下标从1开始) 接下来,我会通过改造上面的示例来演示这两个API的用法。 读取数组 因为lua_rawgeti(L,t,key)等价于: ...
(8)为简化将变量地址用作唯一键的用法,Lua5.2引入了两个新函数:lua_rawgetp和lua_rawsetp。这两个函数类似于lua_rawgeti和lua_rawseti,但它们使用C语言指针作为键。 22.3.2上值 (1)注册表提供了全局变量,而上值则实现了一种类似于C语言静态变量(只在特定的函数中可见)的机制。C语言函数中最多可以有255个上...
lua_rawseti示意图 7.2 字典传递 字典的传递同样需要先入栈一个Table: lua_newtable(self.state); 然后对要传递的字典进行遍历,并通过lua_setfield方法将元素设置到Table中。如: [dict enumerateKeysAndObjectsUsingBlock:^(NSString*_Nonnull key,id _Nonnull obj,BOOL*_Nonnull stop){NSInteger value=[obj inte...
(L,2);constchar*e;int i=1;lua_newtable(L);/*结果表*//* 依次处理每个分隔符*/while((e=strchr(s,*sep))!=NULL){lua_pushlstring(L,s,e-s);/*压入子串*/lua_rawseti(L,-2,i++);/* 向表中插入*/s=e+1;/*跳过分隔符*/}/* 插入最后一个子串*/lua_pushstring(L,s);lua_rawseti...
lua_rawseti(L, -2, 1); lua_pushstring(L, log[i].name); lua_rawseti(L, -2, 2); lua_pushnumber(L, lastCostTime); lua_rawseti(L, -2, 3); lua_pushnumber(L, totalTime); lua_rawseti(L, -2, 4); lua_pushnumber(L, maxTime); ...
lua_pushstring(L,"arri");lua_newtable(L);{//a trick:otherwise the lua engine will crash. This element is invisible in Lua scriptlua_pushnumber(L,-1);lua_rawseti(L,-2,0);for(inti=0; i<arri.size();i++){lua_pushnumber(L,arri[i]);lua_rawseti(L,-2,i+1);}}lua_settable(L...