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

Lua 函数可以返回多个结果:

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

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

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

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

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

_, _, c = unpack({'one', 'two', 'three'})

原文链接 https://stackoverflow.com/questions/3165845

点赞
stackoverflow用户189205
stackoverflow用户189205

你可以使用select函数。它将返回select第一个参数之后的所有参数,其中index是传递给select的第一个参数。

例如:

c = select(3, unpack({'one', 'two', 'three'}))
b, c = select(2, unpack({'one', 'two', 'three'}))
b = select(2, unpack({'one', 'two', 'three'}))   --抛弃最后一个返回值

话虽如此,我认为在大多数情况下,编写_,_,c = f()更加清晰。select主要在参数数量预先不知道或在链接函数调用时(例如,f(select(2, g())))非常有用。

2010-07-02 13:08:56