Ci sono due file di script con il seguente scriptlua: modulo di importazione per quanto riguarda ambito locale
//parent.lua
function scope()
local var = "abc"
require "child"
end
//child.lua
print(var)
In questo modo, child.lua stamperà un valore pari a zero in quanto il campo di applicazione in parent.lua non espone le sue caratteristiche locali al modulo. Ho pensato che sarebbe, dal momento che la direttiva di richiesta è dichiarata all'interno di questo ambito e dopo la dichiarazione di var. Il mio desiderio è di iniettare praticamente tutte le linee del bambino nel genitore. Lo script figlio è appena esportato per una migliore leggibilità. Come posso passare l'ambito locale? loadfile() non ha funzionato, né ha fatto dofile(). La funzione ambiente fenv non contiene valori locali. debug.setlocal() non sembra in grado di creare nuove variabili (inoltre richiederebbe un ricevitore nel figlio). Qualche metodo oltre a ricompilare lo script?
No, questo non è possibile in Lua 5.1. C'è un hack che può dare questo effetto in Lua 5.2, usando 'debug.upvaluejoin'. – finnw
Né '' require' né dofile' è uguale a 'include', che non esiste in Lua. – lhf
Perché non si riscrive lo script figlio come una funzione che riceve argomenti? –