gpt4 book ai didi

lua - 如何检查 Lua 中是否存在模块?

转载 作者:行者123 更新时间:2023-12-04 09:25:56 24 4
gpt4 key购买 nike

我正在使用 xdg-menu-to-awesome-wmgenerate a Lua file包含 GNOME 菜单,用于 inclusion在真棒WM。由于可能没有安装生成器脚本,我需要一些方法让 Lua 仅 require menu模块(如果存在)。

我不想查看文件名,因为它可能在 package.path 中的任何位置.一种选择是忽略模块不存在时创建的异常,但我宁愿不忽略任何其他异常 - 我确实想知道模块是否包含任何语法或其他错误。 reference不幸的是没有指定可以生成哪些异常,所以我不知道该怎么做。

最佳答案

如果需要区分缺失模块和语法错误,可以直接访问package.searchers中的搜索器功能。 .

这些功能将:

  • 成功返回加载函数
  • 如果未找到模块,则返回字符串
  • 如果存在语法错误,则抛出错误

  • 所以你能做的就是模仿 require的方式搜索一个模块,依次调用每个搜索器,直到其中一个返回一个函数。不像 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

    关于lua - 如何检查 Lua 中是否存在模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15429236/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com