我正在为我开发的Lua库生成一些(非html)文档。我将手工生成文档,但如果可能的话,我会感谢某种自动化(即为每个函数生成骨架,以便我可以填充它们)
我想知道lua是否有办法从外部知道函数所采用参数的名称。
例如,有没有办法在Lua中执行此操作?
function foo(x,y)
... -- any code here
end
print( something ... foo ... something)
-- expected output: "x", "y"
非常感谢。
答案 0 :(得分:4)
试试我的bytecode inspector library。在Lua 5.2中,您将能够使用debug.getlocal
。
答案 1 :(得分:4)
好的,这是核心代码:
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))
答案 2 :(得分:3)
看看debug.getinfo
,但您可能需要一个解析器来完成此任务。我不知道在没有实际运行函数和检查其环境表的情况下从Lua中获取函数的参数的任何方法(参见debug.debug
和debug.getlocal
)。
答案 3 :(得分:1)
查看luadoc实用程序。它有点像Doxygen,但是对于Lua。它旨在允许文档与源代码一起编写,但它当然可以用于生成文档结构的模板,以便单独进行充实。当然,模板机制将为您留下维护问题......