【发布时间】:2017-07-30 00:38:05
【问题描述】:
假设我有一个协议Item,以及一个符合它的结构ConcreteItem。
protocol Item {
var name: String { get }
}
struct ConcreteItem: Item {
let name: String
}
在某个时候,我想拥有两组ConcreteItem。
let set1 = Set([ConcreteItem(name: "item1")])
let set2 = Set([ConcreteItem(name: "item2"), ConcreteItem(name: "item1")])
我希望返回名称为 "item1" 的项目。
我可以使ConcreteItem 符合Hashable 并且Set 代码将起作用。但是,可以说我还有以下内容:
struct AnotherConcreteItem: Item {
let name: String
}
我希望 AnotherConcreteItem 也符合 Hashable 只是因为符合 Item。
但是,当我尝试实现这个想法时:
extension Item: Hashable {
var hashValue: Int {
return name.characters.count
}
}
我收到以下错误:Extension of protocol 'Item' cannot have an inheritance clause。
【问题讨论】: