在lua中从函数返回多个值

我正在尝试下面的 lua 代码:

function test() return 1, 2 end
function test2() return test() end
function test3() return test(), 3 end

print(test()) -- 输出 1 2
print(test2()) -- 输出 1 2
print(test3()) -- 输出 1 3

我想让 test3 返回 1, 2, 3

最好的方法是什么?

点赞
用户1576117
用户1576117
...
function test3()
    local var1, var2 = test()  -- 调用函数test,并将返回值分别赋值给var1,var2
    return var1, var2, 3  -- 返回var1,var2,3
end

print(test3())  -- 输出执行test3函数的返回值
2012-10-09 20:14:45
用户1208078
用户1208078

如果你不确定某个函数会返回多少个值,可以像这样做。

function test() return 1, 2 end
function test2() return test() end
function test3()
    local values = {test2()}
    table.insert(values, 3)
    return unpack(values)
end

print(test3())

结果如下:

1   2   3
2012-10-09 20:31:16
用户881229
用户881229

我还发现,在列表末尾使用函数调用时,返回值不会被截断。如果参数的顺序不重要,这很有效。

function test() return 1, 2 end
function test2() return test() end
function test3() return 3, test() end

print(test()) -- 输出 1 2
print(test2()) -- 输出 1 2
print(test3()) -- 输出 3 1 2
2012-10-10 23:17:28