在 Swift 4 中使用 reduce 时出现“上下文闭包类型需要 2 个参数”错误

2023-11-21

以下代码在 Swift 3 中编译

extension Array where Element: Equatable {
    var removeDuplicate: [Element] {
        return reduce([]){ $0.0.contains($0.1) ? $0.0 : $0.0 + [$0.1] }
    }
}

但会产生错误

错误:上下文闭包类型 '(_, _) -> _' 需要 2 个参数,但闭包主体中使用了 1 个参数

在 Swift 4 中。如何将此代码转换为在 Swift 4 中编译?


关闭传递给reduce需要 2 个参数,例如$0 and $1在简写形式中:

extension Array where Element: Equatable {
    var removeDuplicate: [Element] {
        return reduce([]) { $0.contains($1) ? $0 : $0 + [$1] }
    }
}

(这可以在 Swift 3 和 4 中编译。)

在 Swift 3 中你可以使用single范围$0,这将被推断为包含元素的元组$0.0 and $0.1。 这在 Swift 4 中不再可能了,因为SE-0110 区分单元组和多参数函数类型.

这是演示更改的另一个示例:

let clo1: (Int, Int) -> Int = { (x, y) in x + y }
let clo2: ((Int, Int)) -> Int = { z in z.0 + z.1 }

两者都可以在 Swift 3 和 4 中编译,但是这个

let clo3: (Int, Int) -> Int = { z in z.0 + z.1 }

只能在 Swift 3 中编译,不能在 Swift 4 中编译。

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

在 Swift 4 中使用 reduce 时出现“上下文闭包类型需要 2 个参数”错误 的相关文章

  • C++从文件中读取整数并保存到数组中

    我正在制作一个仅从文本文件读取整数的程序 我想创建一个读取整数并将它们存储在数组中的函数 以便稍后可以使用该数组通过冒泡排序对它们进行排序 这是我到目前为止所得到的 但我得到的输出是一些随机的 803234 数字 void read int
  • 使用 UISearchBar 过滤数组

    我目前正在使用以下代码来过滤数组并将结果显示在我的 tableView 中 问题是 只有当搜索与确切的单词匹配时 才会返回结果 如何更改数组过滤器以在输入时搜索每个字符 let data Mango Grape Berry Orange A
  • iOS 13 beta 外部屏幕上的 OverscanCompensation

    我正在测试一个应用程序的测试版 但遇到了外部屏幕的问题 我们看到应用程序周围有黑色边框 我们之前可以通过设置来纠正它overscanCompensation to none但在 iOS 13 中 该设置根本没有任何效果 我们曾经看到一个错误
  • 将数组字段组合成单个数组字段 mongo

    我正在使用 mongo 版本 3 4 3 我的文档存储在 mongo 中 如下所示 id ObjectId 5ad5ab8aaf2808b739ba6ab2 ResumeId 105839064 ResumeDetails WorkProf
  • 显示和随机化 php 数组

    我有一个显示结果的数组 如下所示 Array 0 gt 71 1 gt 56 2 gt 64 3 gt 82 4 gt 90 5 gt 80 6 gt 65 7 gt 62 8 gt 14 9 gt 3 我的代码是 while row my
  • 使用静态指针的动态内存分配

    有人可以向我解释一下为什么下面的代码会这样工作吗 这里我已经初始化了outd作为文件中的静态指针code2 c 然后我动态地为其分配内存malloc 从单独文件中的主函数中一次又一次地调用它code1 c 它看起来整个数组以静态方式运行 因
  • 合并 2 个数组并合并数字键的结果

    我有 2 个数组 我希望通过每个数字键将其中合并 分组在一起 例如 Array1 2009 gt 131 2008 gt 940 2007 gt 176 2006 gt 1 Array2 2008 gt 9 2007 gt 3 我希望输出是
  • Redim Preserve 给出“下标超出范围”

    我想要Redim Preserve一个数组我不断收到错误 下标超出范围 我知道只有最后一个维度的大小可以更改 这正是我正在做的事情 这里出了什么问题 数组的类型是Variant BmMatrix Sheets BENCH Range a60
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia
  • 如何快速更改按钮图像?

    我正在开发一个有按钮的应用程序 该按钮没有文本 图像或背景 所以我想做的就是在viewDidLoad函数中给它一个图像 这就是我所拥有的 IBOutlet var tapButton UIButton override func viewD
  • 将值添加到数组的最有效方法

    假设我有一个大小为N where N gt 0 是否有一种更有效的方法可以不需要 O N 1 步骤来添加到数组中 在代码中 本质上 我目前正在做的是 function prependArray value oldArray var newA
  • 我们可以从 LinkPresentation 框架中的 LPLinkView 中提取图像吗?

    我想在我的应用程序中呈现丰富的链接 并将这些数据发送到我的服务器 我需要访问视图内的图像LPLinkView https developer apple com documentation linkpresentation lplinkvi
  • 通过传递单个值获取多个索引[重复]

    这个问题在这里已经有答案了 可能的重复 列表索引搜索 https stackoverflow com questions 11292260 list index search 我必须在 int 中获取索引 其中值是相同的 因此我必须在 in
  • 在 Go 中,如何将结构体转换为字节数组?

    我有一个我定义的结构实例 我想将其转换为字节数组 我尝试了 byte my struct 但这不起作用 另外 我还被指出二进制包 http golang org pkg encoding binary 但我不确定我应该使用哪个函数以及应该如
  • Node.js - console.log 不显示数组中的项目,而是显示 [Object]

    我在注销对象内数组的内容时遇到问题 实际的物体看起来像这样 var stuff accepted item1 item2 rejected response Foo envelope from The sender to new item1
  • 按范围迭代数组

    我有一个数组 1 2 3 4 5 6 100 我希望将此数组迭代 5 次 具体来说 取数组的前 5 个数字并获取平均值 继续处理接下来的 5 个数字并获取平均值 依此类推 我尝试过多种方法 例如Dequeue和 for 循环但未能获得所需的
  • 在 UIView 中实现自定义 StaggereGrid,就像 SWIFT 中的 Etsy 应用程序一样

    我想实现一个像 Etsy 应用程序一样的 StaggeredGrid 但我对此一无所知 你能给我一些建议吗 这是我需要做的事情的屏幕截图 None
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self
  • 显示键盘时如何在 TextView 下方添加更多填充

    当我在 ScrollView 中有 TextField 并点击它时 键盘会按预期显示 但似乎 TextField 已向上移动到足以显示输入区域 但我希望移动到足够的位置 以便整体可见 否则它看起来像是被剪裁了的 我找不到改变这种行为的方法

随机推荐

  • 如何在开发机器上测试从asp.net发送电子邮件?

    我该如何实现这个目标 SMTP 类在开发计算机上抛出有关找不到 SMTP 服务器的错误 有没有办法在开发机器上测试发送电子邮件 Shawn 直接来自我的 web config
  • R闪亮:如何构建动态UI(文本输入)

    我正在尝试使用 R闪亮构建动态textInput 用户应该在文本字段中写入 然后按添加按钮来填充另一个字段 但是 每次我按下按钮时 所有字段都会变空 就像我必须提前定义我想要多少个字段一样 任何帮助将不胜感激 谢谢 这是我的代码 libra
  • Ant——仅从树上的一个子目录复制文件和子目录

    我想使用 Ant 从单个子目录复制文件和子目录 而不复制其余的目录结构和内容 例如 我想复制 dir 3 其文件 file 1 到 file n 和子目录 dir 4 和 dir 5 但不复制 dir 1 或 dir 2 我可以使用一种模式
  • 使用 NSRegularExpression 命名捕获组

    Does NSRegularExpression支持命名捕获组吗 看起来不像是从文档 但我想在探索替代解决方案之前进行检查 iOS 中不支持命名分组 据我所知 您所能做的就是利用Enum Enum typedef enum kDayGrou
  • SQL Server:使用 FOR XML PATH 嵌套元素

    我想嵌套每个 XML 元素 举个例子 DECLARE TempTable TABLE Column1 char 10 Column2 char 10 INSERT INTO TempTable Column1 Column2 VALUES
  • 如何内爆数组索引?

    是否有可能破坏数组的索引 一个函数返回给我一个数组 我需要的是该数组的索引 所以我只想在数据库工作中使用逗号或任何其他字符来内爆 inexes 你的意思是这样的 implode array keys some arr 正确的 这是文档 fo
  • 修改 Django UserCreationForm

    我想向标准 Django UserCreationForm 添加更多字段 因此我继续将其子类化到我的应用程序的 forms py 文件中 最终得到以下结果 class CustomUserCreationForm UserCreationF
  • RabbitMQ C# 验证消息已发送

    我是 RabbitMQ 的新手 尝试写入队列并验证消息是否已发送 如果失败了 我需要知道它 我做了一个假队列来观察它失败 但无论我看到什么 都没有任何异常 当我寻找一个确认时 我总是得到一个 我从未见过 BasicNack 我什至不确定我是
  • emacs:类和结构的不同缩进

    我试图在 emacs 中实现以下缩进 class A I ALWAYS use access labels in classes public access label int member inclass struct B I NEVER
  • AspectJ JoinPoint 问题

    我目前正在使用 JoinPoint 捕获运行时传递给服务方法的参数 虽然 JoinPoint 帮助我检索参数值 但我发现它没有提供任何好的 API 来检索参数名称 参数类型 当传递的参数是数组等时的单个参数值 这是一个例子 public v
  • Rails 3.1 - CSRF 被忽略?

    这是我的问题 我有一个 Rails 3 1 应用程序 我正在尝试发出 ajax 请求 但收到警告消息 警告 无法验证 CSRF 令牌的真实性 在我的布局中 我有辅助方法 csrf method tag 我添加了以下javascript代码
  • 解释SDWebImage代码中__weak和__strong的使用原因

    我认为我很好地理解了强关键字和弱关键字 但我不明白它在下面的代码中是如何使用的 此代码来自 Olivier Poitrey 的 SDWebImage 可在 github 上找到 我了解强关键字和弱关键字 如下所述 iOS5中强存储和弱存储的
  • 发送鼠标点击消息[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我们如何用C 在某个位置产生鼠标点击事件而不移动鼠标 我的意思是让计算机认为一个位置被鼠
  • 如何使用 pyarrow 从 S3 读取 parquet 文件列表作为 pandas 数据帧?

    我有一种巧妙的方法来实现这一点boto3 1 4 4 pyarrow 0 4 1 和pandas 0 20 3 首先 我可以像这样在本地读取单个镶木地板文件 import pyarrow parquet as pq path parquet
  • 报告定义无效

    我已经转换了一个 rdlc从 SSRS 2005 重新排序到 SSRS 2008 现在 当我要构建该项目时 我遇到了错误 报告定义无效 详细信息 报告定义具有无效的目标命名空间 http schemas microsoft com sqls
  • 从字符串中删除特殊字符

    我有一个字符串 Mikael H fstr m 其中包含一些特殊字符 如何使用 python 删除它 您可以使用unicodedata模块用于规范化 unicode 字符串并将其编码为 ASCII 形式 如下所示 gt gt gt impo
  • 将源安全数据库迁移到具有历史记录的 SubVersion

    Folks 我们有许多源安全数据库应该迁移到 SubVersion 是否有一种 经过测试和证明的 方法可以将它们与历史一起迁移 谢谢 埃萨姆 我也在考虑迁移 我找到了一些可以在此过程中帮助您的页面 从 Visual SourceSafe 迁
  • 从矩阵列中减去特征向量

    Matrix linesP0是 3xN 我想从向量中减去它planeP0即 3x1 有没有更智能 更快速的方法来做到这一点 现在我正在使用 for 循环 示例代码如下 MatrixXf temp linesP0 rows linesP0 c
  • 错误的可打包异常

    首先 我必须说我一直在这个网站上寻找我的问题的答案 我发现了几个有关此异常的主题 但毕竟这些线程对我没有多大帮助 所以这就是我发布的原因这 每次我尝试从包裹中恢复信息时 都会遇到 Bad Parcelable 异常 这是我的班级代码 pub
  • 在 Swift 4 中使用 reduce 时出现“上下文闭包类型需要 2 个参数”错误

    以下代码在 Swift 3 中编译 extension Array where Element Equatable var removeDuplicate Element return reduce 0 0 contains 0 1 0 0