次のスクリプトを含む 2 つのスクリプト ファイルがあります。
//parent.lua
function scope()
local var = "abc"
require "child"
end
//child.lua
print(var)
このように、child.lua は nil 値を出力します。これは、parent.lua のスコープがそのローカル機能をモジュールに公開しないためです。このスコープ内で var の宣言の後に require ディレクティブが記述されているため、そうなると思いました。私の願いは、子のすべての線を親に事実上完全に注入することです。子スクリプトは、読みやすくするためにエクスポートされているだけです。ローカルスコープを渡すにはどうすればよいですか? loadfile() も dofile() も機能しませんでした。関数環境 fenv はローカル値を保持しません。debug.setlocal() は新しい変数を作成できないようです (また、子にレシーバーが必要になります)。スクリプトを再コンパイルする以外の方法はありますか?