问题概要: 用lua写了个函数,返回的是一个表.需要在C里对返回的表里元素做二次处理. 在C里我们可以通过lua_gettable()或者lua_rawget()来获取表里元素值,但使用这两个接口的前提是你得知道key,它才能给你value. 当然对于顺序下标倒无所谓,但恰巧这次我用到的是关联数组,下标是无规则字符串.这时候如何遍历出表里元素就是个问题. lua_next()就成了比较合适的选择.画了下图对整个逻辑做了解释 t_idx = lua_gettop(L); lua_pushnil(L);
while (lua_next(L,t_idx)) { printf("============================/n"); it_idx = lua_gettop(L); lua_pushnil(L);
while(lua_next(L,it_idx)) { printf("%s/n",lua_tostring(L,-1)); lua_pop(L,1); }
lua_pop(L,1); }
本文仅起个抛砖引玉的作用,实际上lua的栈逻辑基本就是这样.其他接口的调用方式也很类似.
1.参数压栈 2.call 函数 3.返回值位于栈顶 4.pop返回值 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。