它是一个错误或功能? Lua的@ OpenComputers @我的世界

时间:2015-06-24 21:40:56

标签: lua load environment

local e={print=print, load=load, a='2'}
e._G=e
load(
[[
  print(a) 
  load("print(a)")()
]]
, '', '', e)() 

- 预期结果

2
2

- 但实际上是

2
1

为什么"加载"没有从环境中获取已编译块的环境?

1 个答案:

答案 0 :(得分:1)

http://www.lua.org/manual/5.2/manual.html#pdf-load

  

如果结果函数具有upvalues,则第一个upvalue设置为env的值,如果给出该参数,或全局环境的值。

即。无论您现在处于_ENV的哪个位置,env的{​​{1}}参数都会将加载的块连接到非常全局的环境。

如果您希望5.2中加载的源默认继承新环境,请替换load / load函数:

loadfile