【问题标题】:How do I return multiple modules in Lua?如何在 Lua 中返回多个模块?
【发布时间】:2019-04-04 23:25:48
【问题描述】:

如何在 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 定义为全局变量,因此可以在 file2.lua 中访问它们。
  • 我原来的答案确实是不正确的。下一个最佳解决方案可能是:stackoverflow.com/questions/9470498/…

标签: module lua


【解决方案1】:

你可能可以返回几个这样的结果:

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")

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2011-11-07
    • 2021-12-13
    • 2018-11-24
    • 2016-09-27
    相关资源
    最近更新 更多