Подтвердить что ты не робот

Как я могу игнорировать первые результаты от функции в Lua?

Функции Lua могут возвращать несколько результатов:

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

Если меня не интересует третье возвращаемое значение, я могу игнорировать его при вызове функции:

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

Есть ли аналогичный способ игнорировать X первых элементов при вызове функции?

Я мог бы написать этот код, если мне нужно только третье возвращаемое значение, но мне было интересно, существует ли более чистый код:

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

Ответ 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())))