【问题标题】:How can I ignore first results from a function in Lua?如何忽略 Lua 中函数的第一个结果?
【发布时间】:2011-03-11 02:23:37
【问题描述】:

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

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

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

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

在调用函数时是否有类似的方法来忽略 X 的第一个元素?

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

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

【问题讨论】:

    标签: function lua multiple-results


    【解决方案1】:

    您可以使用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())))时非常有用

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 2021-04-12
      • 2022-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      相关资源
      最近更新 更多