一次性导入多个 lua 文件?

如何在另一个 lua 文件中导入多个 lua 文件并使用它们。我使用

dofile("/some/paht/file.lua")

对于每个文件。一次性导入多个 lua 文件的最佳方法是什么? 如果我错了,请纠正我。

点赞
用户415823
用户415823

你可以使用 require 来加载模块。虽然使用 dofile 也可以,但是 require 会缓存已加载的模块,并且你可以通过 package.path 来控制模块的查找路径。

你可以通过反复调用 require 加载多个模块。

require 'file1'  --> 加载 ./file1.lua
require 'file2'  --> 加载 ./file2.lua

如果你需要从默认路径之外的地方加载模块,可以在调用 require 之前更新 package.path

package.path = '/some/path/?.lua;'..package.path

如果你的模块有返回值(例如一个函数表),这在 Lua 模块中很常见,那么你可以把 require 的返回值赋给一个变量。

local file1 = require 'file1'  --> 加载 file1.lua
local file2 = require 'file2'

如果你想一次性加载多个文件,可以创建一个函数,接收一个模块名的表,依次 require 每个模块,然后返回它们的返回值。

local function import(t)
    for i, v in ipairs(t) do
        t[i] = require(v)
    end
    return table.unpack(t)
end

local file1, file2 = import{'file1', 'file2'}
2016-05-12 04:45:40
用户107090
用户107090

你可以使用以下代码将所有文件预编译成一个文件:

luac -o bundle.luac file1.lua file2.lua file3.lua

然后只需执行一次以下代码即可:

dofile"bundle.luac"
2016-05-12 11:54:26