lua - 从函数外部获取函数的参数名称列表

时间:2010-06-22 21:16:40

标签: lua

我正在为我开发的Lua库生成一些(非html)文档。我将手工生成文档,但如果可能的话,我会感谢某种自动化(即为每个函数生成骨架,以便我可以填充它们)

我想知道lua是否有办法从外部知道函数所采用参数的名称。

例如,有没有办法在Lua中执行此操作?

function foo(x,y)
  ... -- any code here
end

print( something ... foo ... something)
-- expected output: "x", "y"

非常感谢。

4 个答案:

答案 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.debugdebug.getlocal)。

答案 3 :(得分:1)

查看luadoc实用程序。它有点像Doxygen,但是对于Lua。它旨在允许文档与源代码一起编写,但它当然可以用于生成文档结构的模板,以便单独进行充实。当然,模板机制将为您留下维护问题......

相关问题