使用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
或其他一些错综复杂的技巧?
答案 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