如何从 lua 中的子脚本环境中删除变量?

How to remove a variable from child script environment in lua?

我有一个脚本,我用 loadfile 加载它,然后 运行 它。另外,我在父 lua 脚本的范围内有变量 love,我希望这个变量在子脚本环境中是 nil,但其他一切都保持不变(printmath, pairs, Lua) 的所有标准库。我该怎么做?

这不起作用:

local scenario = love.filesystem.load(script)
local env = {}
setmetatable(env, { __index = _G })
env.love = nil
env.game = Game
setfenv(scenario, env)
local scenario = love.filesystem.load(script)
local env = setmetatable({}, { __index = 
   function(t, k)
      if k == "love" then
         return nil
      else
         return _G[k]
      end
   end
})
setfenv(scenario, env)

您的代码不起作用,因为 env 继承自 _G,因此 env.love_G 中解析。设置 env.love = nil 不会将 love 条目添加到 env

设置env.love = falseenv.love = {}