モジュールを作成すると、ファイルは呼び出し環境ではなく、グローバル環境で実行されます。
-- other_file.lua
require('my_file')
-- my_file.lua
getfenv(2) == getfenv(0) -- true
setfenv(1, {}) -- or module(...)
getfenv(2) == getfenv(0) -- true
私はこれについて読んだことを覚えていません。どこかで言及/文書化されていますか?
(この質問は、よりrequire
もむしろに関するものgetfenv
です。5.2 で削除されたことは知っています。)