推荐于2018-09-18
展开全部
数组的操作,参考实例如下:
数组其实是一种特殊的表格。
int LuaArray(lua_State* L)
{
lua_newtable(L); //新建一个表,并压入栈顶
lua_pushnumber(L,-1); //这行和下面一行,没搞懂为什么需要这样,但如果不执行,lua中获取的数据就会出错
lua_rawseti(L,-2,0);
int array[]={11,22,33,44,55};
for(int n=0;n<sizeof(array)/sizeof(int);n++)
{
lua_pushinteger(L,array[n]); //将数组的数据入栈
lua_rawseti(L,-2,n+1); //将刚刚入栈的数据设置为数组的第n+1个数据,同时这个数据会自动从栈里pop
}
return 1; //push进栈的数据都在设置数组时自动pop了,所以现在栈里只有1个数据,就是最开始push的表
}
lua获取刚刚传的表格
array=luaArray()
for i,v in ipairs(array)
do
print(v)
end
数组其实是一种特殊的表格。
int LuaArray(lua_State* L)
{
lua_newtable(L); //新建一个表,并压入栈顶
lua_pushnumber(L,-1); //这行和下面一行,没搞懂为什么需要这样,但如果不执行,lua中获取的数据就会出错
lua_rawseti(L,-2,0);
int array[]={11,22,33,44,55};
for(int n=0;n<sizeof(array)/sizeof(int);n++)
{
lua_pushinteger(L,array[n]); //将数组的数据入栈
lua_rawseti(L,-2,n+1); //将刚刚入栈的数据设置为数组的第n+1个数据,同时这个数据会自动从栈里pop
}
return 1; //push进栈的数据都在设置数组时自动pop了,所以现在栈里只有1个数据,就是最开始push的表
}
lua获取刚刚传的表格
array=luaArray()
for i,v in ipairs(array)
do
print(v)
end
推荐于2017-11-24 · 知道合伙人互联网行家
关注
展开全部
只能一个一个压入 正如楼上所说 C++不存在和lua里table完全匹配的数据类型
所以我们可以把这个压入函数写到lua里
先在C里写一个函数Fun
Fun把指定的一个全局变量压入堆栈
然后把Fun注册到lua里,假设命名为fun
然后在lua里遍历表的时候将当前元素赋予那个全局变量并且调用fun
这样做的好处在于 不用每次压table都要去重新计算table长度
当然 只是提供一个思路 如果具体代码编写起来还有困难的话 可以再找我
所以我们可以把这个压入函数写到lua里
先在C里写一个函数Fun
Fun把指定的一个全局变量压入堆栈
然后把Fun注册到lua里,假设命名为fun
然后在lua里遍历表的时候将当前元素赋予那个全局变量并且调用fun
这样做的好处在于 不用每次压table都要去重新计算table长度
当然 只是提供一个思路 如果具体代码编写起来还有困难的话 可以再找我
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
lua里的table和C++里的数组差别比较大,我们并不能直接把表简单的传过去,所以我们要把数组转化成一个table里可以存储的方式,因此我们必须遍历一下C++里的数组。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询