我的代码:
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);
Run Code Online (Sandbox Code Playgroud)
结果: 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);
Run Code Online (Sandbox Code Playgroud)
它不输出任何东西.
如何使第二个代码工作,两者之间更有推荐的设计?
附加问题:将所有函数和变量放在每个.lua文件的唯一命名表中是Lua中常用的技术,以避免每个文件之间发生名称冲突吗?