Czy ktoś może dać mi dobry powód, dlaczego to nie działa:Dlaczego Equatable nie zdefiniowane dla opcjonalnych tablic
let a: [Int]? = [1]
let b: [Int]? = nil
a == b
Byłoby to rozwiązanie proponowane moje (jeśli nieeleganckie). Ale to trywialne, więc czuję, że brakuje mi dobrego powodu, dla którego nie jest to realizowane.
func ==<T: Equatable>(lhs: [T]?, rhs: [T]?) -> Bool {
if let lhs = lhs, let rhs = rhs {
return lhs == rhs
}
else if let _ = lhs {
return false
}
else if let _ = rhs {
return false
}
return true
}
W rzeczywistości wartość opcja jest enum: "enum OptionalValue {case Brak przypadku Some (T)}", który może być "None" lub twój typ, gdy wartość jest równa opcjonalnej tablicy to zwraca typ przypadku, który nie jest równy Żaden thet powrót w przypadku drugiego erray niż stial mają bez typu. W rzeczywistości jest to inny typ, gdy robisz "a == b" –