多値返却
Luaは関数で複数の値を返すことができるけどそれをテーブルに突っ込んだらどうなるのかテスト。
function test() return 1,2,3 end t = { test(), test(), test() } for i,v in pairs(t) do print(v) end
出力
1 1 1 2 3
一応多値は展開されてるけど、展開される位置がパース時のインデクスになってしまうっぽいね。
多値を含めてパースするのは確かに難しい気がするけどこれは困る。なんとかいい方法はないかなぁ。
何がやりたいのかというと
postbl = { pos(1), pos(2), pos(3) }
みたいに位置群をリストに静的に展開したいのです。
postbl = { [1]=pos(1), [4]=pos(2), [7]=pos(3) }
ってやるしかないんかな。
試したら多値が展開されなくなっちゃった。。
難しい。
もし最後のフィールドが exp 形式で、その式が関数呼び出しか可変引数式であれば、その戻り値 がすべてリストに追加される (2.5.8 を参照)。これを避けるには、関数呼び出し(あるいは可変引 数式)をカッコで囲む (2.5 を参照)。
逆はないんかw
多値を明示的に展開するには多値を一旦テーブルに入れて、テーブルを展開する関数を作ったりしないとだめかもなぁ。
postbl ={ {pos(1)},{pos(2)},{pos(3)}, } postbl = table.flatten( postbl )
flattenは自作しないとだめだけどw