阅读 Lua 接口。
2013-4-18 14:9:13
收藏:0
阅读:114
评论:1
在lua中,有没有什么方法可以读取接口文件以提取名称/方法/参数?
我有一个类似于这样的.idl文件:
interface
{
name = myInterface,
methods = {
testing = {
resulttype = "double",
args = {{direction = "in",
type = "double"},
}
}
}
这相当于下面的代码(更易读):
interface myInterface {
double testing (in double a);
};
我可以读取文件,将其作为字符串载入并使用gmatch解析以提取信息,但是是否有任何简单的模式可以解析此信息?
最后我想要的是接口名称,其方法,结果类型和参数(例如表)。只是为了知道我正在使用的接口。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在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 有几种处理代码块的方法。那就是
dofile、loadfile和loadstring. 幸运的是,您的输入文件几乎是有效的 Lua 代码(假设这些花括号是匹配的)。唯一有问题的是interface {。以上所有函数都会有效地创建一个包含文件或字符串内容的函数对象,其中
dofile立即执行该函数,而其他函数返回一个函数,您可以在需要时调用该函数。因此,如果您可以自由更改文件,请将第一行中的interface替换为return。然后您可以执行:local interface = dofile("input.idl")interface 会是一个很好的表格,就像你在文件中指定的那样。如果您无法以自己的方式更改这些文件,则必须将文件加载到字符串中,进行一些字符串操作(具体来说,用
return替换第一个interface),然后使用loadstring代替:io.input("input.idl") local input = io.read("*all") input = string.gsub(input, "^interface", "return") -- ^ 标记了字符串的开头 local f = loadstring(input) local interface = f()在这两种情况下,您将得到:
> require"pl.pretty".dump(interface) { name = "myInterface", methods = { testing = { args = { { type = "double", direction = "in" } }, resulttype = "double" } } } > print(interface.methods.testing.args[1].type) double编辑(翻译员注):
我刚意识到,在您的示例输入中,
myInterface没有被包含在"中,因此不是一个正确的字符串。这也是您输入文件中的错误还是您的文件实际上是这样的错误?如果是后者,您也需要进行更改。如果是 Lua 不认识的名称,它不会抱怨,但在这种情况下,您也无法获得该字段。