[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Lua 5.2 and in-do-end
- From: Mark Hamburg <mark@...>
- Date: Mon, 25 Jan 2010 07:39:13 -0800
On Jan 25, 2010, at 4:02 AM, Richard Hundt wrote:
> David Burgess wrote:
>> On 25/1/2010 12:28 PM, Mark Hamburg wrote:
>>> function pushenv( newenv )
>>> local oldenv = getfenv( 1 ) -- However one gains access to it...
>> POUNCE. Methinks that the indoend thing would aided by a currentenv() function...
>
> here's a hackish version:
>
> function currentenv()
> local getlocal = debug.getlocal
> local e = nil
> local x = 0
> while true do
> x = x + 1
> local n,v = getlocal(2, x)
> if not n then break end
> if n == "(environment)" then
> e = v
> end
> end
> return e
> end
The need to scan for a specially named local demonstrates just how hard it is to implement and how potentially expensive it is to execute a function to get the current environment in the presence of the in-do-end construct.
Mark