假设 Lua 堆栈是为即将到来的函数调用设置的(使用lua_pcall()
).
为了使事情具体化,我们假设该函数采用一个字符串参数,并且堆栈不包含该函数下方的任何其他 Lua 对象。也就是说,堆栈将如下所示:
Lua stack at 1 = a LUA_TFUNCTION
Lua stack at 2 = a LUA_TSTRING
如何从这样的堆栈中获取函数的名称?
I tried lua_tostring()
, and luaL_getmetafield()
(with e
= "__name"
),但这些函数不能用于此目的。
从最一般的意义上来说,函数没有名称。和其他价值观一样,它们也是价值观。在一个实例中用于访问函数的名称不需要与在另一个实例中使用的名称匹配,因为您只需复制函数即可。
However,Lua 编译器确实会识别,如果您使用以下形式的语句创建一个函数function <name>(...) end
, that <name>
对于正在创建的函数很重要。该名称已被使用purely出于调试目的(您可以通过以下方式获取函数的“名称”lua_getinfo
在 C API 中),因此不能保证您可以在任何真正意义上使用此名称来查找/访问此函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)