[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Access a member from within the table def
- From: spir ☣ <denis.spir@...>
- Date: Fri, 14 May 2010 15:32:04 +0200
On Fri, 14 May 2010 13:15:19 +0200
steve donovan <steve.j.donovan@gmail.com> wrote:
> Always more than one way to do anything...
>
> local init -- to make sure the function is visible within itself
> function init(val)
> local t = {}
> setfenv(init,t)
> -- we're now writing directly to t, and t's fields are available on the RHS
> x = val
> y = x+10
> z = x+y
> return t
> end
[Maybe I'm wrong on this, but here is my pov:]
Yes, but there's always the same issue that now globals (eg builtin funcs) are inaccessible, since an "env" acts both as globals & locals. Thus, "d=math.square(x*x+y*y)" fails. What is needed (and probably what the op means, but I don't want to speak for him) is to redefine the local scope only, so that the block writes (new vars) and reads (if var exists) in the table itself.
Meaning a table def acts like a func which scope is the table. Pseudo-syntax showing this better than words, maybe:
t = table
<field defs>
end
(This probably requires under the hood the table to be created empty before the block is executed.)
denis
________________________________
vit esse estrany ☣
spir.wikidot.com