Lua中巧妙的获取函数的参数个数

function getArgs(fun)
    local args = {}
    local hook = debug.gethook()
    local argHook = function(...)
        local info = debug.getinfo(3)
        for k,v in pairs(info) do
        	print(k,v)
        end
        if "pcall" ~= info.name then
            return
        end
        for i = 1,math.huge do
            local name,value = debug.getlocal(2,i)
            print(i,name,value)
            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

function test(a,b,c)
	print(a,c)
end


local t = getArgs(test)
for k,v in pairs(t) do
	print(k,v)
end

相关文章

1.github代码实践源代码是lua脚本语言,下载th之后运行thmai...
此文为搬运帖,原帖地址https://www.cnblogs.com/zwywilliam/...
Rime输入法通过定义lua文件,可以实现获取当前时间日期的功能...
localfunctiongenerate_action(params)localscale_action=cc...
2022年1月11日13:57:45 官方:https://opm.openresty.org/官...
在Lua中的table(表),就像c#中的HashMap(哈希表),key和...