_ENV在Windows上的zerobrane studio中无法工作

当在Windows上的zerobrane studio中使用print(_ENV)时,结果为nil。我们是否可以将_ENV变量设置为预期的用途?例如代码,

a = 15                      -- 创建全局变量
      _ENV = {g = _G}             -- 改变当前环境
      a = 1                       -- 在_ENV中创建一个字段
      g.print(_ENV.a, g.a)

在Windows的zerobrane studio中,此代码会引发错误。

原文链接 https://stackoverflow.com/questions/70784233

点赞
stackoverflow用户2858170
stackoverflow用户2858170

_ENV 在 Lua 5.2 中被引入。

详见 https://www.lua.org/manual/5.2/manual.html#8.1

ZeroBrane 默认运行 Lua 5.1 解释器。 你可以通过以下方式选择其他解释器:

主菜单 -> 项目 -> Lua 解释器

在 Lua 5.1 中,你可以这样做:

a = 15
setfenv(1, {g = _G})
_ENV = g.getfenv()
a = 1
g.print(_ENV.a, g.a)

我没有花太多心思在这上面。所以可能不是完全等价的。

2022-01-20 10:23:39