Функции в таблицах lua - PullRequest
0 голосов
/ 08 мая 2018

У меня есть someTabe = {}

someTabe.foo = function (x,y) return x + y end

Как я могу получить пинту (function"(function (x,y) return x + y end) ???Не вернуть результат.

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

Вы можете найти декомпилятор в Интернете, если вы просто пытаетесь увидеть код. Однако в вашем собственном коде это невозможно.

0 голосов
/ 24 мая 2018

Вы не можете получить сам код, но вы можете получить байт-код, используя string.dump():

local f = function(x,y) print('AAA') end)
local bytecode = string.dump(f) -- Get bytecode of function
local f2 = load(f) -- It is copy of f, but (f ~= f2)
f2() -- prints AAA
0 голосов
/ 08 мая 2018

Вы не можете восстановить исходный код функции изнутри Lua.

> print(someTabe.foo)
function: 0x7fed0bc091f0

Это говорит о том, что someTabe.foo содержит функцию, которая была преобразована во внутреннее представление, хранящееся по указанному адресу.

Если вам нужно восстановить исходный код функции изнутри Lua, вам нужно скомпилировать его вручную с помощью load , а затем использовать библиотеку отладки для получения исходного кода.

...