Есть ли способ проанализировать функцию в Lua? - PullRequest
1 голос
/ 16 июня 2020

Я создаю игру в love2d (LuaJIT) и создаю окно отладки для изменения значений во время выполнения. Я смог это сделать, однако теперь я также хочу иметь возможность вызывать функции. Например, я просматриваю таблицу, и в этой таблице есть функция под названием «привет», которая записывается так:

self.hello = function(str, num)
    print(string.format("%s: %d", str, num))
end

Из выражения type(object.hello) я вижу только function. Если бы это была таблица, я мог бы пройти по ней и увидеть ключи и значения, но это просто «функция», и я понятия не имею, как ее правильно вызвать, так как я не знаю, какие аргументы она принимает и сколько. Есть ли способ узнать это во время выполнения в lua? Может быть, эта информация также хранится в какой-нибудь таблице в другом месте?

1 Ответ

1 голос
/ 16 июня 2020

это просто «функция», и я не знаю, как ее правильно называть

И Lua тоже. Что касается Lua, любая функция Lua может принимать любое количество параметров и возвращать любое количество параметров. Эти параметры могут быть любого типа, как и его возвращаемые значения.

Lua сам по себе не хранит эту информацию. Или, по крайней мере, никоим образом нельзя получить, не декомпилировав его байт-код. И поскольку вы используете LuaJIT, для этой «декомпиляции» может потребоваться декомпиляция сборки .

...