键入任何 不能符合 Hashable

2024-03-09

我正在使用 Swift 5.7 新功能,并尝试实现一些异构集。

我已将代码简化为这个简单的游乐场:

protocol Stuff: Hashable {
    var identifier: String { get }
}

struct StuffA: Stuff {
    let identifier: String
    
    func hash(into hasher: inout Hasher) {
        hasher.combine(identifier)
    }
}

struct StuffB: Stuff {
    let identifier: String
    
    func hash(into hasher: inout Hasher) {
        hasher.combine(identifier)
    }
}

var arrayOfStuff: Array<any Stuff> = []
arrayOfStuff.append(StuffA(identifier: "a"))
arrayOfStuff.append(StuffB(identifier: "b"))
// Works like a charm

var setOfStuff: Set<any Stuff> = Set() 
// error: Type 'any Stuff' cannot conform to 'Hashable'
setOfStuff.insert(StuffA(identifier: "a"))
setOfStuff.insert(StuffB(identifier: "b"))

第一次尝试Array<any Stuff> shows any可以与协议一起使用来指定通用约束。

第二次尝试失败,因为 swift 无法检查 Hashable 一致性。我知道Stuff does not符合Hashable,它只是inherits从。但是你如何告诉编译器any Stuff会遵守吗?


None

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

键入任何 不能符合 Hashable 的相关文章

随机推荐

  • 本地图像在 React-Native 应用程序发布版本中不可见

    在我的反应本机应用程序中我有 src http postimg org image ak6w7cbk3 文件夹 其中包括Images文件夹和屏幕文件夹 Myscreens文件夹有各种成分我在哪里使用本地图像Images使用以下代码
  • 如何使用表单身份验证将用户重定向到密码恢复页面

    我是 asp net 的初学者 我目前有一个登录页面 屏幕底部有一个忘记密码链接按钮 我还使用表单身份验证来防止未经授权的用户访问其他页面 除了一件事之外 身份验证似乎工作正常 一旦用户单击链接按钮 它就会阻止用户访问密码恢复页面 如何允许
  • 可变数量的参数而不装箱值类型?

    public void DoSomething params object args 上述签名的问题在于 传递给该方法的每个值类型都将被隐式装箱 这对我来说是严重的性能问题 有没有办法声明一个接受可变数量参数而不装箱值类型的方法 Thank
  • jQuery 中的输入与 :Input

    我想知道为什么人们似乎更喜欢 input over input作为 jQuery 选择器 基本上 这两行似乎做了同样的事情 input first focus input first focus 但第二个版本使用更广泛 我不明白为什么 此外
  • 第三方脚本可以设置第一方 cookie 吗?

    我在网上阅读了很多有关 cookie 的内容 但没有解决这个问题 假设我在 a com 上有一台服务器 而 b com 提供的网页在我的服务器上的该网页中嵌入了一个脚本 该脚本在设置 cookie 方面可以做什么 它可以设置一个cookie
  • 需要特殊数组(线性场)的算法

    我有一个数组 线性场 与预先排序的数字 1 2 3 4 5 6 但这些数组向右移动 k次 now its 5 6 1 2 3 4 k 2 但我不知道k 只有数组A 现在我需要一个算法来找到 A 中的最大值 运行时间 O logn 我认为它是
  • Vue.js 单向绑定表单

    我是 Vue js 的新手 我正在尝试测试这个框架的一些功能 现在我正在测试输入表单 我想进行单向绑定 而不使用v model指令 但我找不到任何示例 有人可以帮助我吗 这是单向和双向绑定的示例 var V new Vue el vue i
  • 如何创建弹出菜单

    我是 javafx 的新手 我想在单击鼠标右键时显示 弹出菜单 我找到一个教程Here http pixelduke wordpress com 2011 12 11 popupmenu in javafx and Here http la
  • 应用默认样式和 onClick 更改按钮的样式 -Angular 4

    我有一个按钮 我想应用按钮的默认样式 当用户单击按钮时 将按钮样式颜色更改为红色 将背景颜色更改为白色 Blow 是我的 css 和组件 btn default color white background color blue btn c
  • 如何检查字符串列表是否存在于两个单独的文件中

    我有两个文件 文件 A 是 IP 地址列表 同一行上有相应的 MAC 地址 文件 B 是仅包含 MAC 地址的列表 我需要比较这两个文件并列出文件 A 中没有在文件 B 中找到的 MAC 地址的行 FILE A 172 0 0 1 AA B
  • 如何让IE10的边框折叠起来?

    有没有人遇到过在 IE10 中无法工作的表格边框折叠的解决方案 我在需要的地方使用了网站上的表格 并且它们在所有其他浏览器中显示良好 但从 IE 10 开始 边框太厚了 上面的问题可能已经有几个月了 但今天我遇到了同样的问题 并且认为我至少
  • Shopify 购物车更改事件 - javascript

    当 Shopify 购物车发生更改时是否会触发一个事件 我可以每隔 x 秒刷新一次购物车 看看是否有什么变化 但基于事件的方法总是更好 虽然没有一站式 购物 呵呵 的方法 但这是可以做到的 在 Shopify 中 商品可以通过常规 HTML
  • 如何使用 Scikit-learn 查找簇质心 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个带有 标记 集群的数据集 我试图找到每个簇的质心 一个向量 其距离是簇的所有数据点中最小的 我找到了许多解决方案
  • React-native应用程序不会在后退按钮上关闭

    当按下后退按钮时 我的反应本机应用程序 在 Android 上 不会关闭 它关闭并进入后台并在那里运行 动画 我也尝试过这个 但得到了相同的结果 BackHandler addEventListener hardwareBackPress
  • 为多个应用程序创建安装程序

    嘿 我正在尝试从一台服务器计算机创建多个游戏的安装程序 然后由各个计算机执行 例如 BF 1942 WC3 BF2 DOW 但是 我需要能够选择要安装的应用程序 这是一个简单的复选框 我对 C 的了解有限 解决这个问题的最佳方法是什么 我看
  • Android NDK:如何在没有java的情况下重写NativeActivity中的onBackPressed?

    我的应用程序完全使用 C C 编写NativeActivity 它没有 Java 代码 基于 native activity NDK 示例 按 后退 按钮将其关闭 破坏活动 但我需要此按钮的其他行为 因为我有自己的 UI 和菜单 它们通过
  • PHP-按索引范围获取数组记录

    你好呀 是否有任何 PHP 本机函数可以根据索引的开始和结束返回数组中的记录范围 i e array 0 gt a 1 gt b 2 gt c 3 gt d 现在我只想返回索引 1 和 3 b c d 之间的记录 任何想法 你不能这样做吗
  • WPF Flowdocument paragraph.BringIntoView() 不适用于新文档

    我想加载大 rtf 文件并滚动到其中的特定段落 所以我做了这样的事情 private FlowDocument GenerateDocument string path var doc new FlowDocument using File
  • 如何在WPF中绘制可点击的矩形

    我是 WPF 应用程序的绝对初学者 需要一些帮助 我想做的就是从 A 点到 B 点画一个矩形 and能够检测何时单击矩形 因此 当单击它时 它会变成黄色 再次单击时 它会变成红色 有多种方法可以做到这一点 向矩形添加单击处理程序 并从后面的
  • 键入任何 不能符合 Hashable

    我正在使用 Swift 5 7 新功能 并尝试实现一些异构集 我已将代码简化为这个简单的游乐场 protocol Stuff Hashable var identifier String get struct StuffA Stuff le