Предположим, я вставляю строку в таблицу следующим образом:
table.insert(tbl, mystring)
и что mystring
генерируется путем замены всех вхождений «a» на «b» в input
:
mystring = string.gsub(input, "a", "b")
Очевидный способ объединить два в один оператор не работает, потому что gsub
возвращает два результата:
table.insert(tbl, string.gsub(input, "a", "b")) -- error!
-- (second result of gsub is passed into table.insert)
которая, я полагаю, является ценой, уплаченной за поддержку нескольких возвращаемых значений. Вопрос в том, существует ли стандартный встроенный способ выбора только первого возвращаемого значения? Когда я нашел select
, я подумал, что это именно то, что он сделал, но, увы, он фактически выбирает все результаты от N и далее, и поэтому не помогает в этом сценарии.
Теперь я знаю, что могу определить свой собственный select
следующим образом:
function select1(n, ...)
return arg[n]
end
table.insert(tbl, select1(1, string.gsub(input, "a", "b")))
но это выглядит неправильно, так как я ожидал бы встроенного способа сделать это.
Итак, мне не хватает какой-то встроенной конструкции? Если нет, то склонны ли разработчики Lua использовать отдельную переменную для извлечения правильного аргумента или написания своих собственных select1
функций?