假设我有一个文件名为“test.lua”包含以下线路:如何在lua中关闭?
--[[ test.lua --]]
local f = function()
print"local function f in test.lua"
end
f_generate = function()
local fun = loadstring(" f()")
-- local env = getfenv(1)
-- set(fun,env)
return fun
end
f_generate()()
--[[ end of test.lua--]]
因为加载链的全球环境下,尽自己的东西,所以,当我打电话 f_generate()() 我会得到一个错误“试图调用全局'f'(一个零值)”
代码注释表明函数环境不能处理这个问题。
因为表是lua中唯一的数据结构(而且函数环境和其他很多东西都是通过表来实现的),我认为合理的假设闭包也是通过表来实现的,但是我怎样才能得到它?
本地__cmp__table = { [ “>”] =函数(A,B)返回A> B端, [ “> =”] =函数(A,B)返回> = B端, [ “<”] =函数(a,b)返回一个 gray 2009-05-23 02:55:05