Question: 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?

Answer: 
You can surround the expression by parentheses:

```
table.insert(tbl, (string.gsub(input, "a", "b")))

```

This will select only the first result.

To get the nth result, you can use `select` and surround it by parentheses:

```
func1( (select(n, func2())) )

```
Putting an expression into parentheses like this: 

`table.insert(tbl, (string.gsub(input, "a", "b")))`

will force one return value. Or you could catch them both like this: 

```
str,cnt = string.gsub(input, "a", "b")
table.insert(tbl, str)

```

or even better, dummy catch it to save a variable:

```
str,_ = string.gsub(input, "a", "b")
table.insert(tbl, str)

```