如何获取函数的名称?

我有一个问题。如何在不使用调试命名空间的情况下知道调用我的函数的函数的名称。 例如:

function test1()
   test2()
end

function test2()
   --如何在这里获取调用我的函数test2的函数的名称。
   --如何在这里获取“test1”?
end

如果允许我使用调试命名空间,那么这很容易,但我无法使用。 任何人有任何想法吗? 对不起我的英语。

原文链接 https://stackoverflow.com/questions/9743923

点赞
stackoverflow用户734069
stackoverflow用户734069

Lua 函数的命名

Lua 函数没有名称。Lua 中的函数就像数字 5.23 或字符串 "string" 一样是值(values),它们可以存储在许多地方中。因此,函数没有真正的名称。调试系统根据函数最初的声明方式为其分配名称,但这也就是它的全部。

如果一个函数需要知道谁调用了它,那么就应该由该函数将调用者作为函数参数来处理。

2012-03-16 20:28:03
stackoverflow用户848161
stackoverflow用户848161

这并不能解决你问题的一半,但是你可以使用FuncTables给你的函数命名。至于它是否能帮助你解决问题,我不知道。

-- 创建一个函数表 --

functable = {name = "bob"}
metatable = {}

metatable.__call = function()
    print "你刚刚调用了一个表!"
end

setmetatable(functable,metatable)

-- 调用一个函数表并获取它的名字 --

functable()
print(functable.name)
2012-03-19 02:56:59