Re: Function environment table interface
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: Re: Function environment table interface
 
- From: Doug Rogers <doug.rogers@...>
 
- Date: 2009年7月06日 17:44:07 -0400
 
Peter Cawley wrote:
On Mon, Jul 6, 2009 at 9:20 PM, Rob Kendrick<lua-l@nun.org.uk> wrote:
I just had a thought; why are function environments not implemented via
a field in a metatable? For example;
> Firstly, environment tables are per-function, whereas all functions
> share a single metatable, so function environments could not be set
> via metatable. Secondly, separating the environment from the metatable
> allows for one to be per-instance and one to be per-class.
It may be that OP meant also to ask "Why not a per-instance metatable 
for functions?" If so, I'd recommend a fun journey through these threads:
 http://lua-users.org/lists/lua-l/2009-05/msg00298.html
 http://lua-users.org/lists/lua-l/2009-03/msg00479.html
IMHO, the short reply to the original question is "performance". 
Requiring the attachment of a metatable for __env would levy the 
overhead of a table lookup, possibly a chain of them due to __index, for 
each function call.
I like the general direction you're going - unifying and generalizing - 
but it seems that separate environments for functions are too useful for 
such a price to be paid per call.
Doug
______________________________________________________________________________________
The information contained in this email transmission may contain proprietary and business 
sensitive information. If you are not the intended recipient, you are hereby notified that 
any review, dissemination, distribution or duplication of this communication is strictly 
prohibited. Unauthorized interception of this e-mail is a violation of law. If you are not 
the intended recipient, please contact the sender by reply email and immediately destroy all 
copies of the original message.
Any technical data and/or information provided with or in this email may be subject to U.S. 
export controls law. Export, diversion or disclosure contrary to U.S. law is prohibited. 
Such technical data or information is not to be exported from the U.S. or given to any foreign
person in the U.S. without prior written authorization of Elbit Systems of America and the 
appropriate U.S. Government agency.