次のスクリプトLUA:モジュールローカルスコープに関する輸入
//parent.lua
function scope()
local var = "abc"
require "child"
end
//child.lua
print(var)
この方法で2つのスクリプト・ファイルがありますparent.lua内のスコープがローカル機能を公開していないため、child.luaがnil値を出力しますモジュールに接続します。 requireディレクティブはこのスコープ内で、varの宣言の後に記述されているので、私はそれを考えました。私の望みは実際には子供のすべてのラインを親に完全に注入することです。子スクリプトは読みやすくするために書き出されています。ローカルスコープにはどのように渡すことができますか? loadfile()はうまくいかず、dofile()もしませんでした。関数環境fenvはローカル値を保持しません。 debug.setlocal()は新しい変数を作成できないようです(子にもレシーバーが必要です)。スクリプトを再コンパイルする以外の方法はありますか?
いいえ、これはLua 5.1では不可能です。 'debug.upvaluejoin'を使って、Lua 5.2でこの効果を与えることができるハックがあります。 – finnw
'require'も' dofile'も 'include'と同じではありません。これはLuaには存在しません。 – lhf
引数を受け取る関数として子スクリプトを書き直すのはなぜですか? –