1

Lua (5.1) を使用して、いくつかの値を返す関数でテーブルを埋めたいと思います。残念ながら、Lua の仕様により、このような関数呼び出しは最後のものに対してのみ展開されます。

function get2() return 1, 2 end
local t = { get2(), get2() }
for _,v in pairs(t) do print(v) end

戻り値:1, 1, 2

これ以外に何か方法はありますか

table = {}; 
res1, res2 = get2(); 
table[#table + 1] = res1; 
table[#table + 1] = res2

または他の複雑なテクニック?

4

1 に答える 1

0

いいえ、これを行う直接的な方法はありません。

ただし、ヘルパー関数を使用してコードを簡素化できます。

function get2() return 1, 2 end

function appendMultiple(t, ...)
  for i=1, select('#', ...) do
    t[#t+1] = select(i, ...)
  end
end

local t = { }
appendMultiple(t, get2())
appendMultiple(t, get2())

for _,v in pairs(t) do print(v) end
--> 1  2  1  2
于 2012-12-23T15:52:26.873 に答える