Функции Lua могут возвратить несколько результатов:
a, b, c = unpack({'one', 'two', 'three'})
Если я не интересуюсь третьим возвращаемым значением, я могу принять решение проигнорировать его при вызывании функции:
a, b = unpack({'one', 'two', 'three'})
Существует ли похожий способ проигнорировать X первых элементов при вызывании функции?
Я мог написать этот код, если я только хочу третье возвращаемое значение, но я задавался вопросом, существует ли более чистый код:
_, _, c = unpack({'one', 'two', 'three'})
Вы можете использовать функцию , выберите
. Он вернет все аргументы после 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 ()))
)