Debugging 如何获取函数';用Lua中的指针命名?
在Lua中,我为我的表/对象创建了一个漂亮的打印机。但是,当显示函数时,它将显示为指针 我一直在阅读,但是当我使用Debugging 如何获取函数';用Lua中的指针命名?,debugging,function,lua,Debugging,Function,Lua,在Lua中,我为我的表/对象创建了一个漂亮的打印机。但是,当显示函数时,它将显示为指针 我一直在阅读,但是当我使用debug.getinfo()内省函数时,它不会返回函数名。这似乎是由于范围问题,但我不知道如何绕过它 使用指针获取函数名的最佳方法是什么?(我知道函数是Lua中的头等公民,可以匿名创建,这很好)创建函数时,将它们注册到表中,并将它们用作键 local tableNames = {} function registerFunction(f, name) tableNames[f
debug.getinfo()
内省函数时,它不会返回函数名。这似乎是由于范围问题,但我不知道如何绕过它
使用指针获取函数名的最佳方法是什么?(我知道函数是Lua中的头等公民,可以匿名创建,这很好)创建函数时,将它们注册到表中,并将它们用作键
local tableNames = {}
function registerFunction(f, name)
tableNames[f] = name
end
function getFunctionName(f)
return tableNames[f]
end
...
function foo()
..
end
registerFunction(foo, "foo")
...
getFunctionName(foo) -- will return "foo"
创建函数时,将它们注册到表中,并将它们用作键
local tableNames = {}
function registerFunction(f, name)
tableNames[f] = name
end
function getFunctionName(f)
return tableNames[f]
end
...
function foo()
..
end
registerFunction(foo, "foo")
...
getFunctionName(foo) -- will return "foo"
出于某种原因,它似乎只适用于数字参数(即堆栈上的活动函数) 剧本
function a() return debug.getinfo(1,'n') end
function prettyinfo(info)
for k,v in pairs(info) do print(k,v) end
end
prettyinfo(a())
印刷品
name a
namewhat global
但是如果我把最后一行改成
prettyinfo(debug.getinfo(a, 'n'))
它只给我一个空字符串:
namewhat
出于某种原因,它似乎只适用于数字参数(即堆栈上的活动函数) 剧本
function a() return debug.getinfo(1,'n') end
function prettyinfo(info)
for k,v in pairs(info) do print(k,v) end
end
prettyinfo(a())
印刷品
name a
namewhat global
但是如果我把最后一行改成
prettyinfo(debug.getinfo(a, 'n'))
它只给我一个空字符串:
namewhat
请看这个问题:我希望在不修改函数的情况下完成它。我想得到我的表格打印机的函数名。请看这个问题:我希望在不需要实际修改函数的情况下完成它。我想得到我的表格打印机的函数名。@Soviut我也打算这样回答。技术上讲,Lua函数没有名称。当您输入
function foo()
时,与执行foo=function()
相同。换句话说,该函数是一个自由代理,恰好有一个名为foo
的变量指向它。@Soviut我也将用类似的东西来响应它。技术上讲,Lua函数没有名称。当您输入function foo()
时,与执行foo=function()
相同。换句话说,函数是一个自由代理,恰好有一个名为foo
的变量指向它。