Хотя я согласен с ответом Эфраима , этот код не всегда будет содержать одно и то же имя, как указано Крисом Бекке.Когда функция назначается другой переменной, «имя» будет изменено.
Вот еще одна альтернатива.Он просто использует строку для идентификации функции.Этот метод решает проблему изменения имени, но вводит проблему обслуживания.Строка должна быть синхронизирована с именем функции с последующей рефакторизацией.
function foo()
local __func__ = "foo"
print( __func__ )
--...
end
В качестве альтернативы, если расположение функции более важно, чем имя, может быть лучше следующее.Это даст имя функции, которая основана на источнике и номере строки.
function getfunctionlocation()
local w = debug.getinfo(2, "S")
return w.short_src..":"..w.linedefined
end
function foo()
print(getfunctionlocation()) --> foo.lua:6
--...
end
Если __func__
все еще кажется лучше, а стандартный Lua не важен, то парсер Lua можно изменитькак в в этом примере для __FILE__
и __LINE__
.