LUA:如何在多重赋值操作中省略一个多值的值



如果我只想要函数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

相关内容

  • 没有找到相关文章

最新更新