lua
文章平均质量分 57
nekocode
奶爸 / 三线城市 Work From Home / 全栈 / INTJ / 工作狂
️ 个人站: https://nekocode.cn
知乎: https://zhihu.com/people/nekocode
GitHub: https://github.com/nekocode
展开
-
lua源代码文件分析
ldebug.c - 调试接口:包含访问调试钩子的函数(lua_sethook/lua_gethook/lua_gethookcount),访问运行时堆栈信息的函数 (lua_getstatck/lua_getlocal/lua_setlocal),检查字节码函数(luaG_checkopenop /luaG_checkcode), 和抛出错误的函数(转载 2012-08-11 13:09:06 · 950 阅读 · 0 评论 -
lua的闭包(closure)研究
最近配置好了Ubuntu下的各种开发环境,在这里强烈推荐下Sublime Text和Geany,个人比较喜欢subl,因为风格更加适合geeker :)我们来看看这次的测试代码:结果:我们可以看出输出中返回十次的函数地址都有改变,也验证了在lua中函数是第一阶类型值。我们稍微改下代码:运行结果:我们可以看到,循环十次输出的l在递增,因为l在这里变成了非局原创 2013-11-02 20:37:03 · 1565 阅读 · 0 评论 -
c++返回table给lua
//定义函数(返回table)int func_return_table(lua_State *L){ lua_newtable(L);//创建一个表格,放在栈顶 lua_pushstring(L, "mydata");//压入key lua_pushnumber(L,66);//压入value lua_settable(L,-3);//弹出key,value,并设置到table里面去转载 2012-09-09 11:31:04 · 934 阅读 · 0 评论 -
将指针传递给lua
void *p;lua_pushlightuserdata(L,p);lua_setglobal(L,"lud");指针是c++的灵魂,为了解决数据的传递问题,lua提供了一种类型:lightuserdata(还有一个是userdata,相当于一块自由内存,由lua的gc负责回收),通常我们用lightuserdata来储存c++中的指针.比较常用的场景: 传递复杂结构数据,类原创 2012-09-09 15:03:11 · 4292 阅读 · 0 评论 -
将lua中的值放入栈顶
//将表内的值或普通值放入栈顶void popval(lua_State *L,string val){ int pos=0,oldpos=0; if((pos=val.find('.',pos))!=string::npos) { string ptr(val,0,pos-oldpos); lua_getglobal(L, ptr.c_str()); pos++;原创 2012-09-09 14:51:54 · 1085 阅读 · 0 评论 -
修改lua的代码解析
有时候希望在lua中加入自定义风格的代码,例如将某个经常用的函数简化为一个符号,在开发某个GAL引擎时,因为需要大量的用到回显文字的命令,所以希望将该命令简化,可以极大地提升写脚本的效率.例如://原有脚本实现echo("这真是一个糟糕的事情","人物1");echo("这真是一个糟糕的事情","人物2");echo("这真是一个糟糕的事情","人物3");echo("这真是一个糟原创 2012-08-11 13:28:41 · 1072 阅读 · 0 评论