require関数で複数の結果を返すLuaモジュールを作成することは可能ですか?私は現在、package.loadersの拡張を書いています。このような動作をサポートする必要があるかどうかを知りたいのです。Luaのrequire関数は複数の結果を返すことができますか?
たとえば、mod.lua
という名前の次のモジュールを取る:次の出力で
print("running script")
s1, s2 = require("mod")
print("s1: " .. tostring(s1))
print("s2: " .. tostring(s2))
結果::
running script
module loading
s1: string1
s2: nil
print("module loading")
return "string1", "string2"
を次のスクリプトによって必要とされます私は2番目の文字列が返されると思います。私はそのような振る舞いを使うつもりはないし、テーブルを返して展開することでそれを複製することができることを認識しています。(それが有効なLua構文であるので)動作するかどうかを知りたいだけです。どこでもこの決定的な答え。
をうん、それが見えますその方法でソースを見ています(私はLua 5.2で、同じ戻り値です)。私は制限があるのは、結果が '_LOADED [" mod "]'に格納されているためだと思います。テーブルから複数の値を返すことはできず、ほとんどの場合は不要です。 – GooseSerbus
@GooseSerbusこれは 'require'が戻り値を変更するためです。モジュールが 'nil'を返す場合、' require'は代わりに 'true'を返します。 – finnw