gpt4 book ai didi

swift - 类型 'Self' 不符合协议(protocol) 'Hashable'

转载 作者:行者123 更新时间:2023-11-28 12:11:21 35 4
gpt4 key购买 nike

当使用扩展为所有符合条件的枚举实现类型方法时,我遇到了错误消息“Type 'Self' does not conform to protocol 'Hashable'”,如下所示:

protocol A { 
static func doSth(with dict[Self: Any])
}

extension A where Self: RawRepresentable, Self.RawValue == Int {
static func doSth(with dict[Self: Any]) {
for (key, value) in dict { //...do something
}
}

enum First: Int, A {
case f1, f2, f3
}

enum Second: Int, A {
case s1, s2, s3
}

....

另一方面,当我通过将我的方法参数的数组键类型编码为 Enum 来实现方法而不在每个 Enum 中使用协议(protocol)和扩展时:

static func doSth(with dict[First: Any]) 
static func doSth(with dict[Second: Any])

等等……我没有报错,可以正确使用doSth的方法。但是,我有几十个这样的枚举,当然更喜欢在扩展中实现这个方法。

附言实现的目的是调用方法 doSth,其字典参数具有来自枚举大小写的键,例如:

First.doSth(with: [.f1: "good", .f2:"better"]

欢迎提出任何建议。

最佳答案

使您的协议(protocol)符合 Hashable(这正是错误消息所说的内容):

protocol A: Hashable { ...} 

你的问题是 [Self: Any] 是无效的,除非 Self: Hashable,所以你的 doSth 方法不能定义。

关于swift - 类型 'Self' 不符合协议(protocol) 'Hashable',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48410823/

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