Lua表构造函数值作为多值返回函数调用

时间:2012-12-23 15:20:27

标签: lua lua-table

使用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

或其他一些错综复杂的技巧?

1 个答案:

答案 0 :(得分: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