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 回答