lua-从函数外部获取函数的参数名列表
我正在为我开发的Lua库生成一些(非html)文档。我将手工生成文档,但如果可能的话,我希望能够实现某种自动化(即为每个函数生成框架,以便我可以填充它们) 我想知道lua是否有办法从函数外部知道函数所取参数的名称 例如,在Lua中是否有这样做的方法lua-从函数外部获取函数的参数名列表,lua,Lua,我正在为我开发的Lua库生成一些(非html)文档。我将手工生成文档,但如果可能的话,我希望能够实现某种自动化(即为每个函数生成框架,以便我可以填充它们) 我想知道lua是否有办法从函数外部知道函数所取参数的名称 例如,在Lua中是否有这样做的方法 function foo(x,y) ... -- any code here end print( something ... foo ... something) -- expected output: "x", "y" 非常感谢。看一下,
function foo(x,y)
... -- any code here
end
print( something ... foo ... something)
-- expected output: "x", "y"
非常感谢。看一下,但是您可能需要一个解析器来完成此任务。在没有实际运行函数并检查其环境表的情况下,我不知道如何从Lua中获取函数的参数(请参见和)。查看该实用程序。这有点像强力剂,但对Lua来说。它的目的是允许文档按照源代码编写,但它当然可以用于生成文档结构的模板,以便单独充实。当然,模板机制会给您留下一个维护问题…试试我的。在Lua5.2中,您将能够使用
debug.getlocal
好的,下面是核心代码:
function getArgs(fun)
local args = {}
local hook = debug.gethook()
local argHook = function( ... )
local info = debug.getinfo(3)
if 'pcall' ~= info.name then return end
for i = 1, math.huge do
local name, value = debug.getlocal(2, i)
if '(*temporary)' == name then
debug.sethook(hook)
error('')
return
end
table.insert(args,name)
end
end
debug.sethook(argHook, "c")
pcall(fun)
return args
end
您可以这样使用:
print(getArgs(fun))
谢谢这些应该是指向某个地方的链接吗?是的,它们是指向联机Lua参考手册的相应部分的链接。我将尝试使用debug.getinfo。谢谢我在
luadoc
方面的经验很差。相反,我一直在以模块内的元数据形式编写文档。对于海报的问题,我认为lhf的答案是肯定的。Luadoc是,嗯,古怪的。Lua不容易获得函数的良好文档签名,luadoc的大部分怪癖都与此相关。我在用C编写的Lua库文档中遇到了相关问题,因为所有Lua可调用函数都具有相同的不透明签名,所以Doxygen根本帮不上忙。@Norman Ramsey:我想了解更多关于您所说的“模块中的metatada”。你有任何样本/文档吗?@Norman Ramsey:我对此提出了一个不同的问题:我想我现在将继续使用lua的调试功能。但是谢谢你的回答。我认为这对其他人发现这个问题很有用。