【发布时间】:2015-04-23 15:19:28
【问题描述】:
考虑以下两个文件:
a.lua
function x()
return 1
end
-- return x
b.lua
function x()
return 2
end
print( x() )
local y = require "a"
print( _G.x(), y )
print( x(), y() )
当我执行 b.lua 时,我收到以下输出:
2
1 function: 0024B710
1 1
在我看来,这是错误的。来自a.lua 的函数x 应该存储为y,而不是覆盖b.lua 中的全局变量。我知道我可以通过在 a.lua 中使用 local 关键字来纠正这种行为。
我只是想知道这是否是不良行为;如果不;如果require 也覆盖了我的全局变量有什么好处?
【问题讨论】:
-
这个问题不只是“为什么默认是全局的?”的轻微变化