我如何忽略LUA功能的首先结果?
-
02-10-2019 - |
题
LUA功能可以返回多个结果:
a, b, c = unpack({'one', 'two', 'three'})
如果我对第三个返回值不感兴趣,我可以选择在调用函数时忽略它:
a, b = unpack({'one', 'two', 'three'})
调用该函数时,是否有类似的方法可以忽略X的第一元素?
如果我只想要第三个返回值,我可以编写此代码,但是我想知道是否存在清洁器代码:
_, _, c = unpack({'one', 'two', 'three'})
解决方案
您可以使用 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()
更干净。 select
当不知道参数编号或链接函数一起调用时,最有用(例如 f(select(2, g()))
)
不隶属于 StackOverflow