作者:jp85201 | 来源:互联网 | 2022-12-10 14:02
我的代码:
lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_settop(L, 0);
//Script A
luaL_dostring(L, "A = {} A.num = 3");
//Script B
luaL_dostring(L, "B = {} function B.update() return A.num * 2 end");
//Script C
luaL_dostring(L, "print(B.update())");
lua_close(L);
结果: 6
但是,如果我像下面这样制作表A
和B
本地:
lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_settop(L, 0);
//Script A
luaL_dostring(L, "local A = {} A.num = 3");
//Script B
luaL_dostring(L, "local B = {} function B.update() return A.num * 2 end");
//Script C
luaL_dostring(L, "print(B.update())");
lua_close(L);
它不输出任何东西.
如何使第二个代码工作,两者之间更有推荐的设计?
附加问题:将所有函数和变量放在每个.lua
文件的唯一命名表中是Lua中常用的技术,以避免每个文件之间发生名称冲突吗?
1> lhf..:
局部变量是定义它们的脚本的私有变量.这就是重点.
如果要从脚本中导出某些内容,请将其返回.定义库的脚本通常返回一个表.这比污染全球环境更有礼貌.