如何检查Lua中是否存在模块?
发布时间:2020-12-15 00:25:46 所属栏目:大数据 来源:网络整理
导读:我正在使用包含GNOME菜单的 xdg-menu-to-awesome-wm到 generate a Lua file,用于Awesome WM中的 inclusion.由于可能没有安装生成器脚本,我需要一些方法让Lua只需要菜单模块(如果存在). 我不想查看文件名,因为它可能位于package.path中的任何位置.一种选择是
我正在使用包含GNOME菜单的
xdg-menu-to-awesome-wm到
generate a Lua file,用于Awesome WM中的
inclusion.由于可能没有安装生成器脚本,我需要一些方法让Lua只需要菜单模块(如果存在).
我不想查看文件名,因为它可能位于package.path中的任何位置.一种选择是忽略模块不存在时创建的异常,但我宁愿不忽略任何其他异常 – 我想知道模块是否包含任何语法或其他错误.遗憾的是reference没有指定可以生成哪些异常,所以我不知道该怎么做. 解决方法
如果需要区分缺少的模块和语法错误,可以直接访问package.searchers中的搜索器功能.
这些功能将: >如果成功,则返回加载程序功能 所以你可以做的是模仿需要搜索模块的方式,依次调用每个搜索器,直到其中一个返回一个函数.与require不同,如果找不到模块,我们不需要抛出错误,即每个搜索器函数返回一个字符串. function isModuleAvailable(name) if package.loaded[name] then return true else for _,searcher in ipairs(package.searchers or package.loaders) do local loader = searcher(name) if type(loader) == 'function' then package.preload[name] = loader return true end end return false end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |