带有点号的文件夹的模块要求

我想要从一个带有点(.)的文件夹中要求文件:

"Folder.ai/test.lua"

如果文件夹中没有点,我会使用:

require(Folder.test)

当点存在时我该怎么做呢?

点赞
用户7396148
用户7396148

require 使用加载器来查找文件,您可以通过将函数插入到 package.loaders 中来添加自定义加载器。

您的自定义加载器可能如下所示:

local function load(modulename)
  local errmsg = ""
  for path in string.gmatch(package.path, "([^;]+)") do
    local filename = string.gsub(path, "%?", modulename)
    local file = io.open(filename, "rb")
    if file then
      -- 编译并返回模块
      return assert(loadstring(assert(file:read("*a")), filename))
    end
    errmsg = errmsg.."\n\tno file '"..filename.."' (checked with custom loader)"
  end
  return errmsg
end

table.insert(package.loaders, 2, load) -- 如果您要让它在标准加载器之前运行,则会运行此操作
                                       -- 如果要在之后运行,可以调用 table.insert(package.loaders, load)

资源:http://lua-users.org/wiki/LuaModulesLoader

2020-01-05 04:46:16