lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Mon, Aug 9, 2010 at 7:58 AM, Luiz Henrique de Figueiredo
<lhf@tecgraf.puc-rio.br> wrote:
>> I'm trying to decide how best to change the environment of a loaded
>> "script" file such that it can be given a brand new environment and
>> re-executed multiple times without recompiling the script (loadin).
>
> One solution which has been posted here is to add "_ENV=..." at the top
> of the script before compiling it. Then you can give the environment
> when you call it. This technique only works for scripts that do not
> use args (...).

It would need to be "local _ENV = ..." to avoid the share upvalue
problem though, yes? As stated in the OP, if the script is called
multiple times, all the closures it creates will share the same _ENV
upvalue. So even if you do "_ENV = ...", closures created from
previous calls will get their environments changed.

Still, I would prefer not to modify the script source (through load or
otherwise).

-- 
- Patrick Donnelly