Lua学习笔记1

本文介绍了如何在C/C++中与Lua交互,特别是如何遍历从Lua脚本传递过来的Table。文章通过实例展示了两种遍历方法,一种针对连续整数作为Key的Table,另一种适用于任意Key的Table,并详细解释了lua_next函数的工作原理。
摘要由CSDN通过智能技术生成

今天上班的时候和程序对一个功能的程序接口,需求是这样的:脚本代码根据配置文件生成一组中奖信息,用table来保存,然后将这个table传给程序接口,程序根据这个table中的数据向玩家显示中奖界面。很简单的一个功能,脚本这边的函数很快就写完了,然后我就琢磨着程序的接口应该怎么写,由于之前没有试过在程序接口中访问lua脚本传过来的table,所以遇到了一些麻烦,上网搜了一下相关资料,总算搞清楚了。现在就简单总结一下c/c++与lua交互中关于table的一些用法吧。

有个Lua脚本函数叫OpenAwardWindow,它是c++实现的一个接口,对应的c++函数为LuaOpenAwardWindow,它的输入参数是一个table。现在我们要解决的问题是怎么在LuaOpenAwardWindow中遍历table中的所有元素。我们知道lua是通过栈来实现和c语言的交互的,至于为什么是栈呢,以后再专门说明吧。脚本传过来的table是放在栈顶的,即栈的-1位置,我们可以用lua_istable(L, -1)来检查输入参数是否合法。lua的数据类型和c的数据类型是不一样的,它们必须用专门的函数的转换,比如lua_tonumber(L, -1)就是把栈顶的数据转为double类型,lua_tostring(L, -1)是转为带结束符的字符串类型。新手一定会说,那lua_totable(L, -1)就是转换了table类型咯^_^。如果c有table这种数据类型,那一定会有这个函数的,可惜c没有。不过在这里我有个想法,能不能用c实现一种类型,它是可以和lua的table对应的呢?这样就真的可以有lu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值