【问题标题】:Import multiple lua files at once?一次导入多个lua文件?
【发布时间】:2019-06-30 00:57:48
【问题描述】:

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

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

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

【问题讨论】:

  • 我读过那篇文章,但它不能一次获得所有模块定义的单个文件。我有 5 个 .lua 文件,每个文件都定义了自己的包,现在我想在第 6 个 .lua 文件中使用 5 个包,我该怎么做?
  • 第 6 个文件需要另外 5 个文件有什么问题?
  • 是的,你是对的,没有问题。我也是这样。但为此我需要为每个文件编写单独的 dofile("file/to/path") 。而不是这个,我可以用更简单的方式来做吗,比如在 java 中导入包

标签: lua


【解决方案1】:

您可以使用require 来加载模块。使用dofile 有效,但require 将缓存加载的模块,您可以通过package.path 控制在哪里查找模块。

您只需为每个模块调用require 即可加载多个模块。

require 'file1'  --> load ./file1.lua
require 'file2'  --> load ./file2.lua

如果您需要从不在默认路径中的某个位置加载模块,您可以在调用 require 之前更新 package.path

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

如果您的模块有返回值(例如函数表),这对于 Lua 模块很常见,则将变量设置为返回值 require

local file1 = require 'file1'  --> load file1.lua
local file2 = require 'file2'    

如果您想一次性加载多个文件;创建一个函数,该函数接受一个模块名称表,需要每个模块名称,然后将它们全部返回。

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'}

【讨论】:

  • 使用导入的最终解决方案做得非常好。
【解决方案2】:

您可以将所有文件预编译为一个

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

然后做一个

dofile"bundle.luac"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多