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

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

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

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

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

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

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

_, _, c = unpack({'one', 'two', 'three'})
20
задан Thibault Falise 5 July 2010 в 07:31
поделиться

1 ответ

Вы можете использовать функцию , выберите . Он вернет все аргументы после 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 ())) )

22
ответ дан 30 November 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: