如何在Lua中返回多个模块?

时间:2019-04-03 20:00:29

标签: module lua

如何在Lua中返回多个表/对象?我在file1.lua中有这个文件:

local A = {}
function A.new()
    o = {}
    return o
end
local B = {}
function B.new()
    o = {}
    return o
end

return A        --And I want to return B

我想在file2.lua中同时使用它们:

local A = require "file1"
a = A.new()
b = ?

1 个答案:

答案 0 :(得分:2)

您可能会返回一些如下结果:

return A, B
…
local A,B = require "file1"

但这是一个不好的主意,因为缓存,并且可能会失败。

最好将它们都放在表中

return {A = A, B = B}
…
local file1 = require "file1"
local A,B = file1.A, file1.B

UPD:这仅在lua 5.2+中有效,但可能是最短和最清晰的:

return {A, B}
…
local A, B = table.unpack(require "file1")

您可以在最后两个中使用任何一个。