假设我将一个字符串插入到表中,如下所示:
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
我以为这正是它所做的,但可惜,它实际上选择了all结果从 N 开始,因此在这种情况下没有帮助。
现在我知道我可以定义自己的select
如下:
function select1(n, ...)
return arg[n]
end
table.insert(tbl, select1(1, string.gsub(input, "a", "b")))
但这看起来不对,因为我期望有一种内置的方法来做到这一点。
那么,我是否缺少一些内置构造?如果不是,Lua 开发人员是否倾向于使用单独的变量来提取正确的参数或编写自己的变量select1
功能?