lua-users home
lua-l archive

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

Hi Everyone,
I am puzzled by the behaviour of the following code:

function foo()
 local x= 1
 local x= 20
 local x= 300

 local i=1
 while true do
   local name, value = debug.getlocal( 1, i)
   if not name then break end
   print("i=",i, "name=",name, "value=",value)
   i= i+1
-- call  the function
-- OUTPUT follows:

i=      1       name=   x       value=  1
i=      2       name=   x       value=  20
i=      3       name=   x       value=  300
i=      4       name=   i        value=  4

I am surprised to see that there are three different local 'x'
variables. All of them belong to the same "block" which is foo()
function body and, thus, should have the same scope. Why does not Lua
collapses them into just one local x variable??