Мне удалось получить почти все переменные из моего приложения Lua с помощью этой функции, но не те, которые являются локальными для файлов. lua ...
Пример в root из основной. lua: локальный тест = 10
Это не может быть найдено.
Есть идеи?
Примечание: я запускаю это в приложении Love2D, и эта функция вызывается из обратного вызова Love (love.draw).
function getvarvalue (name)
local value, found
-- try local variables
local exit = false
local level = 0
while debug.getinfo(level) ~= nil do
local i = 1
while true do
local n, v = debug.getlocal(level, i)
if n then
print("local "..i.." "..level.." name:"..n)
end
if not n then break end
print(n)
if n == name then
value = v
found = true
end
i = i + 1
end
if found then return value end
level = level + 1
end
-- try upvalues
level = 0
while debug.getinfo(level) ~= nil do
local func = debug.getinfo(level).func
i = 1
while true do
local n, v = debug.getupvalue(func, i)
if n~= nil then print("up "..i.." "..level.." "..n) end
if not n then break end
if n == name then return v end
i = i + 1
end
if getfenv(func)[name] ~= nil then
return getfenv(func)[name]
end
level = level + 1
end
-- not found
return "?"
end