Может ли функция Lua require возвращать несколько результатов?

Можно ли создать модуль Lua, который возвращает несколько результатов через функцию require? В настоящее время я пишу расширение для package.loaders и хочу знать, нужно ли мне поддерживать такое поведение.

Например, возьмем следующий модуль с именем mod.lua :

print("module loading")
return "string1", "string2"

Что требуется для следующего сценария:

print("running script")
s1, s2 = require("mod")
print("s1: " .. tostring(s1))
print("s2: " .. tostring(s2))

Результатом будет следующий вывод:

running script
module loading
s1: string1
s2: nil

Когда я ожидаю, что будет возвращена вторая строка. Я не собираюсь использовать такое поведение, и я понимаю, что вы можете воспроизвести его, вернув таблицу и распаковав ее, я просто хочу знать, должно ли это работать (поскольку это действительный синтаксис Lua), и я не могу найти окончательный ответ по этому поводу нигде.

17
задан GooseSerbus 27 February 2012 в 18:49
поделиться