Lua 模块加载器

lua-users home
wiki

这是一个简单的 Lua 模块加载器示例,它就像 Lua 提供的独立加载器一样加载 Lua 模块。您可以使用它来实现更复杂的加载器。 (JeromeVuarand)

module(..., package.seeall)

local function load(modulename)
  local errmsg = ""
  -- Find source
  local modulepath = string.gsub(modulename, "%.", "/")
  for path in string.gmatch(package.path, "([^;]+)") do
    local filename = string.gsub(path, "%?", modulepath)
    local file = io.open(filename, "rb")
    if file then
      -- Compile and return the module
      return assert(loadstring(assert(file:read("*a")), filename))
    end
    errmsg = errmsg.."\n\tno file '"..filename.."' (checked with custom loader)"
  end
  return errmsg
end

-- Install the loader so that it's called just before the normal Lua loader
table.insert(package.loaders, 2, load)

另请参阅


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2009 年 1 月 8 日下午 5:45 GMT (差异)