函数
f()
返回多个值,这些值将被输入到第二个函数g()
中。我无法更改 f()
,但我可以更改 g()
以及对其的所有调用。我想知道是否可以说哪种变体表现最好?取决于什么?
带有一个表参数的函数头
function g(arg)
--code
end
以及使用表构造函数调用函数
g({f()})
参数数量可变的函数头
function g(...)
--code
end
和常规函数调用
g(f())
具有多个变量的函数头(假设
f()
返回值的数量已知)
function g(x, y, z)
--code
end
和常规函数调用
g(f())
完全不同的变体?
首先,谨防过早优化。如果
g(f())
呼叫相对较少,则差异可能可以忽略不计。
接下来,创建额外的表需要时间,因此选项(1)总是比(3)慢。
关于选项 (2),它实际上取决于
g()
对参数的实际作用。 local args = {...}
与选项 (1) 等效,而 local x, y, z = ...
与选项 (2) 相同。