Es gibt zwei Skript-Dateien mit dem folgende Skriptlua: Modul Import in Bezug auf lokalen Bereich
//parent.lua
function scope()
local var = "abc"
require "child"
end
//child.lua
print(var)
Auf diese Weise wird child.lua einen Nullwert drucken, da der Umfang in parent.lua nicht seine lokalen Merkmale aussetzt zum Modul. Ich dachte es würde, da die Require-Direktive in diesem Umfang und nach der Deklaration von Var. Mein Wunsch ist es, praktisch alle Linien des Kindes in den Elternteil zu injizieren. Das untergeordnete Skript wird nur zur besseren Lesbarkeit exportiert. Wie kann ich den lokalen Umfang weitergeben? Loadfile() hat nicht funktioniert, noch Dofile(). Die Funktionsumgebung fenv enthält keine lokalen Werte. debug.setlocal() scheint nicht in der Lage zu sein, neue Variablen zu erzeugen (auch würde es einen Empfänger im Kind erfordern). Gibt es eine Methode, außer das Skript neu zu kompilieren?
Nein, das ist in Lua 5.1 nicht möglich. Es gibt einen Hack, der diesen Effekt in Lua 5.2 mit 'debug.upvaluejoin' erzeugen kann. – finnw
Weder 'require' noch' dofile' ist dasselbe wie 'include', das es in Lua nicht gibt. – lhf
Warum schreiben Sie nicht einfach Ihr Kindskript als eine Funktion, die Argumente empfängt? –