Wiem, że prawie podobne pytanie zostało zadane wcześniej, ale nie jestem w stanie tego skomentować, ponieważ jestem tu nowy. Z tego powodu publikuję pytanie separatystyczne. Również moje pytanie jest rozszerzeniem do poprzedniego pytania i ma na celu bardziej ogólne rozwiązanie. To jest link do poprzedniego pytania: How to test equality of Swift enums with associated valuesPrzeciążanie operatora równości w szybkich podsumowaniach z powiązanymi wartościami
Chcę przetestować równość w enum z wartościami powiązanymi:
enum MyEnum {
case None
case Error
case Function(Int) // it is a custom type but for briefness an Int here
case ...
}
próbowałem skonfigurować funkcję przeciążenia jak poniższy
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
}
}
}
Nie daje to błędu podczas kompilacji, ale kończy się niepowodzeniem z bad_exec w uruchomionym procesie. Najprawdopodobniej dlatego, że testujemy a == bw domyślnym przypadku, wywołuje samą funkcję ponownie. Część .Function działa zgodnie z oczekiwaniami, ale nie reszta ... Tak więc lista spraw jest nieco dłuższa, jak mogę przetestować przypadki, które nie mają z nimi powiązanej wartości dla równości?
Właśnie dodano odpowiedź tutaj: http: //stackoverflow.com/a/41034836/2784160 – LShi