gpt4 book ai didi

string - 在Lua中,我可以在没有自定义函数的情况下轻松选择第N个结果吗?

转载 作者:行者123 更新时间:2023-12-04 16:25:13 25 4
gpt4 key购买 nike

假设我将一个字符串插入到一个表中,如下所示:

table.insert(tbl, mystring)

还有那个 mystring通过将 input 中所有出现的“a”替换为“b”来生成:
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职能?

最佳答案

您可以用括号将表达式括起来:

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

这将仅选择第一个结果。

要获得第 n 个结果,您可以使用 select并用括号括起来:
func1( (select(n, func2())) )

关于string - 在Lua中,我可以在没有自定义函数的情况下轻松选择第N个结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2704771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com