我想在 Lua 5.1 (luajit) 的同一个函数上设置不同的环境:
f = function() print(a) end
b = setfenv(f, { a = 1, print = print })
c = setfenv(f, { a = 2, print = print })
我想打印不同的b()
数字c()
我已经通过基于string.dump
env 创建新的函数块并将其绑定到它来破解一种方法,但是有更好更优雅的方法吗?或者,一个函数是否可以根据某些条件以某种方式具有不同的上值?
function bind_env(f, env)
return setfenv(loadstring(string.dump(f)), env)
end
谢谢!