为 Lua 生成依赖关系?
2016-7-20 2:23:37
收藏:0
阅读:74
评论:1
我有一个 Lua 项目,其中 Lua 文件指定在同一根文件夹下的多个目录中,具有一些依赖关系。
偶尔我会遇到问题,当在加载时加载表时,我会得到 nil 异常,因为该表正在引用未初始化的表,例如:
Customer =
{
Type = CustomerTypes.Friendly
}
这会导致 CustomerTypes 作为 CustomerTypes.lua 尚未加载的 nil 异常。
我目前的解决方案是简单地在这些 Lua 文件中使用全局函数调用来加载依赖脚本。
我想做的是预处理我的 Lua 文件以找到所有依赖关系,并在运行时按照那个顺序加载它们,而无需在我的 Lua 文件中使用函数调用或特殊语法来确定这一点(即,预处理器将过程化地处理依赖关系)。
这是可以实现的吗?是否有其他解决方案?(我找到过一些,但不确定是否值得追求)。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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解决问题有数不清的方式。我可以想到3种,但我敢打赌我可以说明其中至少101种并出版一本咖啡桌书。
首先,必须指出,这里的“依赖关系”概念严格取决于您的应用程序。Lua没有这种感觉。因此,这并不像是克服lua中的缺陷,而是您在应用程序中创建一个脚本环境,使您感到舒适,而这就是lua所关注的。
现在,我认为您已经得出了一个结论,即需要预处理才能解决给定的问题。我不认为这是必要的。我感觉更传统的解决问题的方法是全局地创建一个
__newindex元方法,通过引用最初从文件系统中扫描出的脚本列表来处理“CustomerTypes不存在”的情况,并运行该脚本。但也许您有一些想要以严格的预处理方式完成的好理由。在您的情况下,我会将“依赖项”视为您的脚本文件系统中的任何名称。然后,通过使用刚刚创建的定义/列表来扫描每个脚本以查找依赖项的名称,并在每个脚本之前添加
load(dependency)命令。由于在这种情况下,“运行时”或“预处理”概念有些模糊,您可能会在脚本编译时间内实现这一点。您可以使用LuaMacros令牌过滤器系统来使用宏,将
CustomerTypes替换为require(“CustomerTypes.lua”)或类似的内容,在发现CustomerTypes是一个合法的依赖项名称后采取相应的行动。