【发布时间】:2012-08-18 19:07:40
【问题描述】:
Lua 从 setfenv() 切换到 _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 的方法似乎不太灵活。
罗伯托在他的The Novelties of Lua 5.2 中写道:
“作为语法糖,它比旧环境简单得多”
简单在哪里?我忽略了什么?
我相信这个主题值得更好地处理,它在 5.2 用户手册中给出。
【问题讨论】:
标签: lua