Я знаю, что почти аналогичный вопрос задавался ранее, но я не могу его прокомментировать, потому что я здесь новичок. Вот почему я публикую отдельный вопрос. Также мой вопрос является продолжением предыдущего заданного вопроса и направлен на более общее решение. Это ссылка на предыдущий вопрос: Как проверить равенство перечислений Swift со связанными значениями
Я хочу проверить равенство в перечислении со связанными значениями:
enum MyEnum {
case None
case Error
case Function(Int) // it is a custom type but for briefness an Int here
case ...
}
Я попытался настроить функцию перегрузки следующим образом.
func ==(a: MyEnum, b: MyEnum) -> Bool {
switch (a,b) {
case (.Function(let aa), .Function(let bb)):
if (aa==bb) {
return true
} else {
return false
}
default:
if (a == b) {
return true
} else {
return false
}
}
}
Это не дает ошибки времени компиляции, но завершается с ошибкой bad_exec в запущенном процессе. Скорее всего потому, что проверка a==b в случае по умолчанию снова вызывает саму функцию. Часть .Function работает, как и ожидалось, но не все остальное... Итак, список случаев несколько длиннее, как я могу проверить случаи, которые не имеют связанного с ними значения, на равенство?