提问人:wimalopaan 提问时间:10/28/2021 更新时间:10/28/2021 访问量:80
LUA:如何在多重赋值中省略多值值
LUA: howto omit a value of a multi-value in a multiple-assignment
问:
如果我只想要函数 f() 的第一个和第三个值,我可以执行以下操作:
local a, _, b = f();
由于是一个有效的名称,因此可能会被分配一个大表。_
_
在上述情况下,有没有办法省略这个分配者?(显然:如果超出范围,则为 gc'ed)。_
_
答:
4赞
Ivo
10/28/2021
#1
不确定它是否有帮助,但也许您可以定义一个帮助程序函数,例如
function firstAndThird(a, b, c)
return a, c
end
然后像这样使用它
local a, b = firstAndThird(f());
评论
2赞
lhf
10/28/2021
或者避免创建表。function firstAndThird(a,b,c) return a,c end
0赞
Ivo
10/28/2021
@lhf是的,那就更好了。不知道为什么没想到哈哈。我会编辑我的答案,让它变成这样
3赞
Piglet
10/28/2021
#2
在上述情况下,有没有办法将这个分配者省略为 _?
不,如果需要第三个返回值,则无法省略该赋值。您只能通过 引用返回的对象来确保它不保持活动状态。当然,只有在没有其他参考的情况下,这才会有所作为。_
除了使用函数来限制 的范围外,您还可以使用_
do end
local a,c
do
local _ a,_,c = f()
end
或者,只需删除未使用的引用即可。
local a, _, c = f()
_ = nil
评论
0赞
Ivo
10/28/2021
我认为一些换行符会大大改进您的代码。起初,我不明白您在第一个示例中使用的语法,直到我意识到如果我自己编写,我会在几行上编写相同的代码。将所有内容放在一行上有时可能很好,但不应引起任何混淆。但什么是适合作为单行的,当然有点主观。
1赞
Piglet
10/28/2021
@IvoBeckers我每年唯一一次使用单行本,你抓住我:D
上一个:R 中的多个赋值?[复制]
评论
_ = nil