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

时间:2017-10-06 12:55:14

标签: lua love2d lua-5.1

我有一个脚本,我用SELECT I1.propertyName, ip01.propertyName FROM Input1 I1 JOIN iplookup1 ip01 ON I1.address= ip01.address UNION SELECT I1.propertyName, ip02.propertyName FROM Input1 I1 JOIN iplookup2 ip02 ON I1.address= ip02.address 加载然后运行它。此外,我在父lua脚本的范围内有变量loadfile,我希望此变量在子脚本enivornment中为love,但其他所有内容都不受影响(nilprintmath,Lua的所有标准库。我怎么能这样做?

这不起作用:

pairs

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

您的代码无效,因为env继承自_G,因此env.love已解决_G。设置env.love = nil不会向love添加env条目。

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