如果我只想要函数 f() 的第一个和第三个值,我可以执行以下操作:
local a, _, b = f();
由于_
是一个有效的名称,可能_
会被分配一个大表。
_
在上述情况下,有没有办法忽略这个分配?(很明显:如果_
超出范围,它将被 gc'ed)。
如果我只想要函数 f() 的第一个和第三个值,我可以执行以下操作:
local a, _, b = f();
由于_
是一个有效的名称,可能_
会被分配一个大表。
_
在上述情况下,有没有办法忽略这个分配?(很明显:如果_
超出范围,它将被 gc'ed)。
不确定它是否有帮助,但也许您可以定义一个辅助函数,例如
function firstAndThird(a, b, c)
return a, c
end
然后像这样使用它
local a, b = firstAndThird(f());
在上述情况下,有没有办法将这个赋值给 _ ?
不,如果您需要第三个返回值,则无法省略该分配。您只能通过_
. 当然,这只有在没有其他参考的情况下才会有所不同。
除了使用函数来限制_
范围之外,您还可以使用do end
local a,c
do
local _ a,_,c = f()
end
或者您只需删除未使用的参考。
local a, _, c = f()
_ = nil