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