Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Module 如何在Lua中返回多个模块?_Module_Lua - Fatal编程技术网

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

Module 如何在Lua中返回多个模块?,module,lua,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()

如何在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 = ?

您可能会返回以下几个结果:

返回A,B
…
本地A,B=需要“文件1”
但这是一个坏主意,因为缓存可能会失败

最好把它们都放在桌子上:

返回{A=A,B=B}
…
本地文件1=需要“文件1”
本地A,B=file1.A,file1.B
UPD:这只适用于Lua5.2+,但可能是最短和最清晰的:

返回{A,B}
…
本地A,B=表。解包(需要“文件1”)

您可以在最后两个上使用任意值。

您的代码将A和B定义为全局值,因此可以在file2.lua中访问它们。我最初的回答确实不正确。下一个最佳解决方案可能是: