Lua中如何返回多个模块?

在Lua中如何返回多个表/对象?我在file1.lua中有这样的代码:

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

return A        --我想返回B

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

local A = require "file1"
a = A.new()
b = ?
点赞
用户5697743
用户5697743

你可能会像这样返回几个结果 :

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

但这是一个很坏的主意,因为缓存很容易失败。

更好的方法是把它们放到表中 :

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

更新 :这只适用于 lua 5.2+,但可能是最短和最清晰的方式:

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

你可以在最后两个上使用任何一个。

2019-04-04 13:48:31