setfenv()
Lua 从to切换有什么大不了的_ENV
?
在各种“最新消息”来源中,这一举措被认为是 Lua 5.1 和 5.2 版本之间最重要的变化之一。
但是,PIL 和其他地方给出的示例可以精简为以下内容:
-- Lua 5.1 -- Lua 5.2
function myfunc() function myfunc()
setfenv(1, {}) _ENV = {}
end end
到目前为止,我们在这里获得的是我们已经保存了五个击键。(我相信情况和C方面没有太大区别。)此外,如果我做对了,setfenv()
可以从函数外部和函数内部使用,而_ENV
只能从函数内部访问。(当然,当使用 C API 时,可以直接访问 upvalues。)从我写的内容来看,5.2 的方法似乎不太灵活。
在他的 Lua 5.2 的新奇之处,罗伯托写道:
“作为语法糖,它比旧环境简单得多”
哪里简单了?我忽略了什么?
我相信这个话题值得更好地处理,它在 5.2 用户手册中给出。