如何在Lua中忽略函数的第一个结果?

28
Lua函数可以返回多个结果:
a, b, c = unpack({'one', 'two', 'three'})

如果我对第三个返回值不感兴趣,我可以在调用函数时选择忽略它:

a, b = unpack({'one', 'two', 'three'})

在调用函数时是否有类似的方法可以忽略前X个元素?

如果我只想要第三个返回值,我可以编写这段代码,但我想知道是否存在更简洁的代码:

_, _, c = unpack({'one', 'two', 'three'})
1个回答

28
你可以使用select函数。它将返回index之后的所有参数,其中index是传递给select的第一个参数。
例子:
c = select(3, unpack({'one', 'two', 'three'}))
b, c = select(2, unpack({'one', 'two', 'three'}))
b = select(2, unpack({'one', 'two', 'three'}))   --discard last return value

话虽如此,我认为在大多数情况下,编写_,_,c = f()更加简洁。当参数数量未知或需要链接函数调用时(例如f(select(2, g()))),select通常很有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接