Prints the upvalues of some local functions.
local foo
= 5
local bar
= "hello"
local test
= { "table",
true,
"variable" }
local function DoSomethingWithFoo()
foo
= foo
+ 1
end
local function DoSomethingWithFooAndBar()
foo
= foo
/ 2
bar
= bar
.. " world"
end
local function DoSomethingWithBarAndTest()
test
[1] = bar
.. "reader!"
end
local function GetUpvalues( func )
local info
= debug.
getinfo( func,
"uS" )
local variables
= {}
if ( info
!= nil && info.what
== "Lua" )
then
local upvalues
= info.nups
for i
= 1, upvalues
do
local key, value
= debug.
getupvalue( func, i )
variables
[ key
] = value
end
end
return variables
end
print(
"DoSomethingWithFoo:" )
PrintTable(
GetUpvalues( DoSomethingWithFoo ) )
print(
"\nDoSomethingWithFooAndBar:" )
PrintTable(
GetUpvalues( DoSomethingWithFooAndBar ) )
print(
"\nDoSomethingWithBarAndTest:" )
PrintTable(
GetUpvalues( DoSomethingWithBarAndTest ) )
Output: DoSomethingWithFoo:
foo = 5
DoSomethingWithFooAndBar:
bar = hello
foo = 5
DoSomethingWithBarAndTest:
bar = hello
test:
1 = table
2 = true
3 = variable