作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的代码:
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 中避免每个文件之间名称冲突的常用技术?
最佳答案
局部变量对定义它们的脚本是私有(private)的。这就是重点。
如果你想从脚本中导出一些东西,返回它。定义库的脚本通常返回一个表。这比污染全局环境要礼貌得多。
关于lua - 如何从其他脚本访问本地表变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51378952/
我是一名优秀的程序员,十分优秀!