如何从其他脚本访问本地表变量

Zac*_*Lee 2 lua

我的代码:

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

但是,如果我像下面这样制作表AB本地:

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中常用的技术,以避免每个文件之间发生名称冲突吗?

lhf*_*lhf 5

局部变量是定义它们的脚本的私有变量.这就是重点.

如果要从脚本中导出某些内容,请将其返回.定义库的脚本通常返回一个表.这比污染全球环境更有礼貌.