Вы можете вызвать <a href="http://www.lua.org/manual/5.1/manual.html#lua_getinfo" rel="nofollow">lua_getinfo</a>
со строковым параметром «S», а затем проверить «исходный» член структуры lua_Debug.Если эта строка начинается с '@', это имя файла, и вам нужно будет перечитать файл, если вы хотите источник (Lua только читает файл постепенно, чтобы загрузить функцию, и никогда не сохранял ее как строку).В противном случае его содержимым будет строка, загруженная как фрагмент, в котором была определена функция.
Обратите внимание, что в любом случае возвращаемое значение source
будет всего фрагмента , который определил функциювопрос.Вы можете сузить строку до этой функции, используя другие поля, определенные в структуре: заметьте, однако, что это не является гарантией того, что вы сможете загрузить эту строку обратно, чтобы получить то же поведение (определение функции можетнапример, ссылки на переменные, определенные во внешней области видимости).