1

我有一个脚本,我加载loadfile然后运行它。此外,我love在父 lua 脚本的范围内有变量,我希望这个变量nil在子脚本环境中,但其他所有内容都保持不变(Luaprint的所有标准库)。我怎样才能做到这一点?mathpairs

这不起作用:

local scenario = love.filesystem.load(script)
local env = {}
setmetatable(env, { __index = _G })
env.love = nil
env.game = Game
setfenv(scenario, env)
4

2 回答 2

2
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)
于 2017-10-06T13:08:50.720 回答
1

您的代码不起作用,因为env继承自_G,因此env.love_G. 设置env.love = nil不会loveenv.

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

于 2017-10-06T13:22:28.237 回答