Я знаю, что почти аналогичный вопрос задавали ранее, но я не могу его прокомментировать, потому что я здесь для нового. Вот почему я отправляю отдельный вопрос. Также мой вопрос является продолжением предыдущего заданного вопроса и нацелен на более общее решение. То есть ссылка на предыдущий вопрос: How to test equality of Swift enums with associated valuesПерегрузка операторов равенства в быстрых перечислениях со связанными значениями
Я хочу проверить равенство в перечислении с соответствующими значениями:
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 работает так, как ожидалось, но не все остальное ... Итак, список случаев несколько длиннее, как я могу проверить случаи, которые не имеют связанного с ними значения для равенства?
Я просто добавил ответ здесь: HTTP: //stackoverflow.com/a/41034836/2784160 – LShi