Как мне вернуть несколько модулей в Lua? - PullRequest
2 голосов
/ 03 апреля 2019

Как я могу вернуть несколько таблиц / объектов в 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 Ответ

2 голосов
/ 04 апреля 2019

Вы, вероятно, можете вернуть несколько результатов, подобных этому:

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

Вы можете использовать любой из последних двух.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...