Lua - 在函数之外获取函数的参数名称列表
2010-6-22 21:16:40
收藏:0
阅读:187
评论:5
我正在为我开发的一个 Lua 库生成一些非 HTML 的文档。我将手动生成文档,但如果可能的话,我会很感激一些自动化(例如为每个函数生成框架,以便我可以填写它们)。
我想知道是否有一种方法让 Lua 从函数外部知道它所采用的参数名称。
例如,是否有一种方式在 Lua 中实现这一点?
function foo(x,y)
... -- any code here
end
print( something ... foo ... something)
-- expected output: "x", "y"
非常感谢。
原文链接 https://stackoverflow.com/questions/3097209
点赞
stackoverflow用户68204
看一下 luadoc 实用工具。它类似于 Doxygen,但适用于 Lua。它旨在允许文档与源代码内联编写,但肯定也可以用来生成文档结构的模板,以便单独进行完善。当然,模板机制将给你留下后续维护问题……
2010-06-23 01:21:18
stackoverflow用户107090
尝试使用我的 bytecode inspector library。在 Lua 5.2 中你可以使用 debug.getlocal
。
2010-06-23 01:37:08
stackoverflow用户4705704
这是核心代码:
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))
2015-03-25 02:12:19
stackoverflow用户6472546
function GetArgs(func)
local args = {}
for i = 1, debug.getinfo(func).nparams, 1 do
table.insert(args, debug.getlocal(func, i));
end
return args;
end
function a(bc, de, fg)
end
for k, v in pairs(GetArgs(a)) do
print(k, v)
end
运行结果:
1 bc
2 de
3 fg
基本上我们使用 debug.getinfo
来检索 nparams
属性(它提供了关于函数有多少个参数的信息),并且使用 debug.getlocal
来访问参数的名称。
经过测试,在 Lua 5.4 中运行正常。
2021-10-13 23:21:39
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
请查看
debug.getinfo
,但是你可能需要一个解析器来完成这个任务。我不知道是否有任何方法可以在 Lua 中获取函数参数而不实际运行该函数并检查其环境表格(请参见debug.debug
和debug.getlocal
)。