lua杂项

X. 数组里面的元素可以是函数

Q: lua_pushliteral和lua_pushstring有何区别?

A: 通常在push字符串字面值时使用lua_pushliteral,在push字符串指针是使用lua_pushstring。   

原因是前者通过sizeof(字符串字面值)/sizeof(char)计算长度,而后者通过strlen计算长度。   

因此前者只能push字符串字面值,但速度比后者快。而后者既可push字符串字面值,也可push字符串指针。

Q: luaL_loadfile, luaL_loadstring, luaL_loadbuffer的区别?

A: luaL_loadfile把文件内容作为chunk,并在内部调用lua_load    

luaL_loadstring把字符串栈转为buffer调用luaL_loadbuffer   

luaL_loadbuffer把buffer的内容作为chunk,并在内部调用lua_load   

lua_load则将chunk作为lua function压栈,并具有自动分析chunk是二进制(luac)还是普通文本的能力

Q: lua_pcall, lua_resume的区别?

A: lua_resume只可以用在coroutine中,当coroutine没有任何yield时,lua_resume可以用lua_pcall代替

 

不要经常使用临时table座位参数给lua 函数,这样会增加gc

 

 

posted @ 2013-04-08 21:28  ghost&240  阅读(682)  评论(0编辑  收藏  举报