在Lua中,我可以轻松地选择第N个结果而不需要自定义函数吗?

2023-12-24

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

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功能?


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

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

这将仅选择第一个结果。

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

func1( (select(n, func2())) )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Lua中,我可以轻松地选择第N个结果而不需要自定义函数吗? 的相关文章

随机推荐

  • NSMutableArray 对象的总大小

    我有一个NSMutableArray包含一堆对象 我想弄清楚的是有多少内存array使用 在查看了几个地方之后 我知道了调用的大小 当我调用它时 我得到了 32 位 这是调用的大小 NSMutableArray自己反对 示例代码 NSMut
  • 如何在 Angular 单元测试中模拟窗口滚动?

    如何在 Jasmine 单元测试中模拟或模拟窗口滚动和 或设置 window pageYOffset 属性 我正在使用 Angular 1 3 Jasmine 2 1 Karma 0 12 28 和 PhantomJS 1 9 12 这是我
  • 何时在 SAS 中使用 IF 或 %IF

    我是 SAS 新手 很难弄清楚何时应使用简单的 If Then else 以及何时应使用 IF THEN ELSE 作为示例代码如下 let inFile scan sysparm 1 macro read data infile data
  • 如何为 Celery 任务实现自动重试

    在芹菜中 你可以retry任何任务 以防出现异常 你可以这样做 task max retries 5 def div a b try return a b except ZeroDivisionError exc raise div ret
  • 反序列化时BinaryFormatter和CryptoStream问题

    我在这里有点绝望了 我正在尝试将带有序列化对象的加密文件写入磁盘 然后检索该文件 解密该文件并将对象反序列化回来 更新 我将代码重构为 using Stream innerStream File Create this GetFullFil
  • 使用 ajax 无限滚动不适用于 Chrome

    好的 在对这个网站进行了大量研究之后 我编写了执行无限滚动的代码 JS window scroll function if window scrollTop window height document height alert This
  • 找不到 CatalogManager.properties

    我的 servlet 应用程序使用 XML 目录 首先我用的是org apache xml resolver tools CatalogResolver 它找到它的配置文件CatalogManager properties under WE
  • NSInMemoryStoreType 与 NSBatchDeleteRequest 不兼容吗?

    我目前正在对与核心数据交互的层进行单元测试 它保存 删除和更新Item目的 然而 我的测试试图保存一些Item然后执行批量删除一直失败 This is Item extension Item MARK Properties NSManage
  • postgres 函数和 BEGIN 事务

    我对 postgres 的功能和事务如何工作有一些疑问 目前我的函数如下所示 CREATE OR REPLACE FUNCTION test function some id character varying RETURNS charac
  • Golang Gin Set Cookie 未在浏览器中设置[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 所以我有一个托管在domainA com的后端golang gin api 我还有一个托管在domainB com的前端Next
  • HTML Agility Pack,在 HTML 文件中创建新行

    Dim codice As String Dim doc As New HtmlDocument Dim coll As HtmlNodeCollection Dim node As HtmlNode Dim nuovo As HtmlNo
  • 如何为没有区域设置属性的 NSFormatter 指定区域设置/语言?

    NSFormatter 有很多专门的子类 CNContactFormatter CNPostalAddressFormatter DRMSFFormatter MKDistanceFormatter NSByteCountFormatter
  • 压缩文件保留目录结构

    我正在使用 codeplex 中的 DotNetZip DLL http dotnetzip codeplex com 来压缩程序中的一些文件 我面临的问题是在压缩文件后 它保留了目录结构 当我提取 zip 文件时 所有父文件夹都会再次创建
  • Onclick CSS 按钮效果

    我正在创建一个 CSS 按钮 并尝试制作一个 onclick 效果 当用户单击该按钮时 它会将按钮文本下推 1px 我的问题是它按下了按钮的整个底部 你将如何进行 div class one p a href Button a p div
  • 从主要活动中禁用片段中的按钮

    我的片段中有 3 个按钮 我想从主要活动中禁用它们 我尝试在replace newfragment之前使用bundle选项 但它产生了其他问题 片段中的按钮可以投射到主要活动吗 像这样的东西 我收到错误无法投射 但我的输入不正确 RedUp
  • Babel 7 中的外部导入不会被转译

    我目前正在将代码库从 Babel 6 迁移到 7 该代码由多个具有自己配置的单独项目组成 The main项目从以下位置导入文件external然而脚本是从导入的external by main没有被转译并且在 意外的令牌导入 上失败 脚本
  • Angular ui 选项卡,每个选项卡都有单独的控制器

    我想制作一个引导选项卡集 每个选项卡都有自己的控制器 谁能指出我应该朝哪个方向走 目前我已经制作了几个不同的控制器 我希望在选项卡集中使用它们 而不是将它们显示为不同的路线 我知道我可以通过在不同的控制器模板中将选项卡集显示为活动的给定控制
  • 如何找到最佳的模糊字符串匹配?

    蟒蛇的新的正则表达式模块 https pypi python org pypi regex支持模糊字符串匹配 大声歌颂 现在 根据文档 The ENHANCEMATCH标志进行模糊匹配尝试以提高拟合度 它找到的下一个匹配项 The BEST
  • 获取用户输入的数字列表

    我尝试使用input Py3 raw input Py2 获取数字列表 但是使用代码 numbers input print len numbers 输入 1 2 3 and 1 2 3给出的结果是7 and 5分别 它似乎将输入解释为字符
  • 在Lua中,我可以轻松地选择第N个结果而不需要自定义函数吗?

    假设我将一个字符串插入到表中 如下所示 table insert tbl mystring 然后mystring通过将所有出现的 a 替换为 b 生成input mystring string gsub input a b 将两者合并为一个