假设我有两个这样的可变参数函数:
function a(num)
if num == 1 then
return 1
else
return 1, 2
end
end
function b(num)
if num == 1 then
return 1
else
return 1, 2
end
end
然后我想构建另一个函数,它同时调用 a
和 b
并返回 a
的所有结果,然后是b
。我想写这样的东西:
function c(num)
return a(num), b(num)
end
但它只返回 a
的第一个结果,然后是 b
的所有结果。我该怎么做?
最佳答案
只能返回表达式列表中最后一个函数的所有结果;其他的将被截断为一个结果。
因此,这
function f1()
return 1
end
function f2()
return 2, 3
end
print(f1(), f2())
按预期打印 1 2 3
,但是这
print(f2(), f1())
打印 2 1
,因为 f2()
被截断为一个结果。
作为解决方法,如果您提前知道结果的数量,您可以这样做
local a, b = f1()
local c, d = f2()
return a, b, c, d
或者对于任意数量的结果,你可以这样做
local t1 = {f1()}
local t2 = {f2()}
-- Append t2 to t1
return unpack(t1)
关于function - 合并两个可变函数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21032870/