可変個の返り値をテーブルにつっこむ
luaでは、可変個の引数は...でさばけるのだが、
反対に可変個の返り値をさばくよい方法はなさげだった。
とりあえずあみ出したのでメモ。
状況
function hoge() -- なんかやっている -- 返り値が何個帰ってくるか不定 return a, b, c end -- 先頭をfirstに、残りをテーブルに代入したい local first, nokori_zenbu=hoge()
こうする
-- 入れ物を宣言 local first, nokori_zenbu -- 代入用クロージャ local pack_func=function(_first, ...) first=_first nokori_zenbu={...} end -- 代入実行 pack_func(hoge())
もっとスマートなやり方はないのかなー。
ましな方法を見つけた。
local zenbu={hoge()} -- ばらすなら local first=table.remove(zenbu, 1)
よくできた文法だ・・・