我正在为单一类型的两个子集开发一个功能。例如。水果。我有两个水果枚举如下:
enum SourFruits: String {
case Grape, Orange, Lemon
}
enum SweetFruits: String {
case Watermelon, Banana, Apple
}
为了在我的实现中使用这两个作为单一类型,我使用了一个协议:
protocol Fruits {
}
extension SweetFruits: Fruits {
}
extension SourFruits: Fruits {
}
现在这里是我的实现看起来像:
func doCommonOnFruit(fruit: Fruits) {
//Do common
}
func doSomeThingWithSourFruit(fruit: SourFruits) {
doCommonOnFruit(fruit)
// Do specific
}
func doSomeThingWithSweetFruit(fruit: SweetFruits) {
doCommonOnFruit(fruit)
// Do specific
}
这很好用,但是当我尝试将它作为键添加到地图中时:
let map: [Fruit : String] = [:]
它提示我一个错误说:Type 'Fruit' does not confirm to protocol 'Hashable'
。我的地图应该包含任何(甜或酸的水果作为关键)。如何实现这一点。
我尝试Hashable
在 Fruit 中实现,但没有成功。请帮助我。