Lua 5.1 中模块中覆盖函数

我正在编写一份 Lua 程序,其中有很多相互独立的模块。每个模块都将相关的源文件存储在其文件夹中。我想要的是在每个模块中覆盖 require 函数,以便在调用 require 时加载模块文件夹中的文件。

假设我有以下模块,每个模块都有一个名为 utils.lua 的文件:

src
├── module1
│   ├── main.lua
│   └── utils.lua
├── module2
│   └── utils.lua
├── module3
│   └── utils.lua
└── utils.lua

我正在编写 module1.main。我想要能够像这样写东西

require 'utils' -- 实际上加载 module1.utils。

-- 做一些事情...

有什么好的想法吗?

注:我需要 require,因为我有一些自定义搜索程序。

点赞
用户9608077
用户9608077

为什么不写成:

local utils = require "module1.utils"

如果您不选择这样做,改变 require 行为的正确方法是向 package.loaders 添加自己的函数。

2016-04-04 22:42:26