编写模块时,文件在全局环境中运行,而不是在调用环境中运行:
-- other_file.lua
require('my_file')
-- my_file.lua
getfenv(2) == getfenv(0) -- true
setfenv(1, {}) -- or module(...)
getfenv(2) == getfenv(0) -- true
Run Code Online (Sandbox Code Playgroud)
我永远不记得读到这个.是在任何地方提到/记录的吗?
(这个问题更多的是关于require而不是getfenv.我知道它已经在5.2中删除了.)
它没有明确记录,但是如果没有任何精确的陈述,你应该假设它的工作方式与Lua的其余部分一样,即使用全局环境.
dofile也在全局环境中运行文件,而不是在调用环境中运行.换句话说,dofile与includeLua没有的不一样.
require本质上是一个dofile支持路径和缓存加载文件的版本.因此,它还在全局环境中运行文件,而不是在调用环境中运行.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |