我正在尝试以下的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
我希望test3返回1、2、3,如何最好地实现这个功能?
我正在尝试以下的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
我希望test3返回1、2、3,如何最好地实现这个功能?
如果你不确定某个函数可能返回多少个值,你可以像这样做。
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
return test(), test()
- 我会得到 1 1 2
。可能我需要用 { }
捕获每个“元组”,然后在这里连接它们,而不是“合并”。(*) - 参见 https://dev59.com/LXM_5IYBdhLWcg3wWR2V vs https://dev59.com/A3M_5IYBdhLWcg3wp1Cl - Tomasz Gandorreturn test(), test()
只是 OP 中 return test(), 3
示例的稍微不同的变体。比我更好的解释在 这个 Lua 编程文档 上。 - Mike Corcoranunpack
的结果用作另一个函数的参数吗?如果可以,语法是什么? - VimNing...
function test3()
local var1, var2 = test()
return var1, var2, 3
end
print(test3())
print(table.unpack(testN())
,其中testN
返回一些未知数量的返回值,将打印所有返回值! - T Suds我还发现,在列表末尾调用函数时,返回值不会被截断。如果参数顺序无关紧要,则此方法效果很好。
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
test()
的第一个值。 - GreenHawk1220