4
je tente de faire ce qui suit: (code include() ci-dessous)Charger un fichier et retourner son environnement
File1.lua
A = 5
File2.lua
file1 = include(File1.lua)
A = 1
print(A) -- 1
print(file1.A) -- 5
J'ai trouvé exactement ce que je cherche mais en lua 5.1 ici: Loadfile without polluting global environment
Mais je ne peux pas le faire fonctionner en 5.2,
function include(scriptfile)
local env = setmetatable({}, {__index=_G})
assert(pcall(setfenv(assert(loadfile(scriptfile)), env)))
setmetatable(env, nil)
return env
end
L'utilisation de ce à partir de C++, avec une version enregistrée de loadfile, donc j'essaie de ne pas modifier la fonction call.Is ce possible? Quoi que j'essaie, les breaks ou env sont null.
Merci! Je ne pensais pas qu'une telle solution fonctionnerait parce que j'utilisais ma propre version du fichier de chargement, mais ma compréhension de la manière dont elle était emballée était erronée ... – TomB
Affirmer que pcall n'a aucun sens. – daurnimator
Je peux voir ce que signifie daurnimator. Si vous avez l'intention de faire échouer des scripts mal formés, pourquoi ne pas l'appeler régulièrement au lieu de passer par l'ensemble de 'assert (pcall' business? – greatwolf