Для перечислений со связанными значениями Swift не предоставляет оператор равенства. Таким образом, я реализовал один, чтобы иметь возможность сравнить два перечислений:Сравнить перечисления со связанными значениями в 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
}
}
Моя проблема заключается в том, что у меня есть много таких перечислений с большим количеством случаев, поэтому мне нужно много писать этого сравнения кода (для каждого перечисление, для каждого случая).
Как вы можете видеть, этот код всегда следует той же схеме, поэтому представляется более абстрактным способом реализации поведения сравнения. Есть ли способ решить эту проблему? Например, с дженериками?