Suppose I am inserting a string into a table as follows:
table.insert(tbl, mystring)
and that mystring
is generated by replacing all occurrences of "a" with "b" in input
:
mystring = string.gsub(input, "a", "b")
The obvious way to combine the two into one statement doesn't work, because gsub
returns two results:
table.insert(tbl, string.gsub(input, "a", "b")) -- error!
-- (second result of gsub is passed into table.insert)
which, I suppose, is the price paid for supporting multiple return values. The question is, is there a standard, built-in way to select just the first return value? When I found select
I thought that was exactly what it did, but alas, it actually selects all results from N onwards, and so doesn't help in this scenario.
Now I know I can define my own select
as follows:
function select1(n, ...)
return arg[n]
end
table.insert(tbl, select1(1, string.gsub(input, "a", "b")))
but this doesn't look right, since I'd expect a built-in way of doing this.
So, am I missing some built-in construct? If not, do Lua developers tend to use a separate variable to extract the correct argument or write their own select1
functions?