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