lua-users home
lua-l archive

RE: local and global

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


Or something like 
--------------------------------------------------
x = 1 -- _G.x
local t1 = {x = _G.x + 1} 
function foo()
 local t2 = {x = t1.x + 1}
 local x = t2.x
 print (x)
end
foo()
--------------------------------------------------
I have to admit that I cannot see a single reason why it would be useful to name everything "x". I agree that code design could most likely be changed to avoid such a need.
AB
-----Original Message-----
From: Nick Trout [mailto:nick@rockstarvancouver.com]
Sent: Wednesday, October 15, 2003 5:42 PM
To: Lua list
Subject: RE: local and global
I don't think you can do that anymore. In the old days you could use %x
to give you the "upvalue" of x, which was the outer scope value. I
believe upvalue syntax has been removed, which is probably a good thing.
You can't get the outer scope value in C/C++ when you have a clash, and
neither can you in Lua. Unless you use the debug interface (don't!) I
don't think you can get the value without nasty coding. Refactor your
algorithm or copy the value.
Regards,
Nick
> -----Original Message-----
> From: Leandro Candido [mailto:enclle@click21.com.br]
> Sent: Wednesday, October 15, 2003 3:03 PM
> To: Lua list
> Subject: Re: local and global
>
> Hello,
>
> No, what I want is to access x in [level-1], this is the x global
to
> the
> block/scope. Example:
> --x = 123 -- _G.x
> function test()
> local x = 123 --< I want to access this
> for i = 0,10 do
> local x = x + i --< [local x] = 246 + i
> if x == 130 then
> [global x ] = x --< [x this level-1] = [local x]
> end
> end
>
> Thanx,
>
>
Leandro.
>
> ----- Original Message -----
> From: "Daniel Silverstone" <dsilvers@digital-scurf.org>
> To: "Lua list" <lua@bazar2.conectiva.com.br>
> Sent: Wednesday, October 15, 2003 6:59 AM
> Subject: Re: local and global
>
>
> > On Wed, 2003年10月15日 at 04:22, Leandro Candido wrote:
> > > How can I access a global variable after a redeclaration as a
> local?
> Ex:
> > > [global x] = -x -- global x = negative of local x
> >
> > If you *definitely* mean global rather than "local in enclosing
scope"
> > then...
> >
> > _G["x"] or just _G.x should do what you want (unless I'm horribly
> > mistaken)
> >
> > D.
> >
> > --
> > Daniel Silverstone
http://www.digital-scurf.org/
> > Hostmaster, Webmaster, and Chief Code Wibbler: Digital-Scurf
Unlimited
> > GPG Public key available from keyring.debian.org KeyId:
20687895
> >
> >
>

AltStyle によって変換されたページ (->オリジナル) /