对于带有关联值的枚举类型,Swift 并没有提供相等性运算符。因此,我实现了一个这样的运算符以便比较两个枚举类型:
enum ExampleEnum{
case Case1
case Case2(Int)
case Case3(String)
...
}
func ==(lhs: ExampleEnum, rhs: ExampleEnum) -> Bool {
switch(lhs, rhs){
case (.Case1, .Case1): return true
case let (.Case2(l), .Case2(r)): return l == r
case let (.Case3(l), .Case3(r)): return l == r
...
default: return false
}
}
我的问题是我有很多这样的枚举类型,每种枚举类型都有很多情况需要编写大量的比较代码(对于每个枚举类型,对于每个情况)。
正如你所看到的,这些代码总是遵循相同的模式,因此似乎存在更抽象的方式来实现比较行为。是否有一种方法解决这个问题?例如使用泛型?