Java で次のように、LuaJ を使用してさまざまな Lua スクリプトをグローバル環境にロードしています。
globals = JmePlatform.standardGlobals();
LuaValue chunk = globals.load(new FileInputStream(luaScriptA), scriptName, "t", globals);
chunk.call();
私の問題は、たとえば、scriptName がたまたま、require、print、error、math、または呼び出し後にグローバルに既に存在するその他の名前である場合です。
globals = JmePlatform.standardGlobals();
、スクリプトは実際には印刷などの実際の機能を置き換え/上書きします。
これを防ぐ簡単な方法はありますか?
残念ながら、次のようなテスト:
if (globals.get(scriptName) != Globals.NIL) {
//then dont allow script load
}
スクリプトが更新されたときに、既存のスクリプトを実際にオーバーライドする必要がある場合があるため、私には機能しません。