如何从 lua 中的子脚本环境中删除变量?
How to remove a variable from child script environment in lua?
我有一个脚本,我用 loadfile
加载它,然后 运行 它。另外,我在父 lua 脚本的范围内有变量 love
,我希望这个变量在子脚本环境中是 nil
,但其他一切都保持不变(print
,math
, 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 = false
或env.love = {}
。
我有一个脚本,我用 loadfile
加载它,然后 运行 它。另外,我在父 lua 脚本的范围内有变量 love
,我希望这个变量在子脚本环境中是 nil
,但其他一切都保持不变(print
,math
, 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 = false
或env.love = {}
。