从lua中的函数返回多个值

Kar*_*ara 13 lua

我正在尝试以下lua代码:

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

print(test()) -- prints 1 2
print(test2()) -- prints 1 2
print(test3()) -- prints 1 3
Run Code Online (Sandbox Code Playgroud)

我想test3返回1,2,3

实现这一目标的最佳方法是什么?

Mik*_*ran 22

如果您不确定某些函数可能返回多少个值,您可以执行此类操作.

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())
Run Code Online (Sandbox Code Playgroud)

这个输出:

1   2   3
Run Code Online (Sandbox Code Playgroud)


Dar*_*ter 7

...
function test3()
    local var1, var2 = test()
    return var1, var2, 3 end
end

print(test3())
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,最好使用表格.具有未知数量的返回值将很快变得非常非常烦人.如果你使用一个表,你可以简单地解压缩_outside_的功能:`打印(table.unpack(testN())`,其中`testN`返回一些数量不明的返回值,将打印所有返回值的! (2认同)

Kar*_*ara 5

我还发现,通过列表末尾的函数调用,返回值不会被截断。如果参数的顺序不重要,那么效果很好。

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

print(test()) -- prints 1 2
print(test2()) -- prints 1 2
print(test3()) -- prints 3 1 2
Run Code Online (Sandbox Code Playgroud)