Kann mir jemand einen guten Grund geben, warum dies nicht funktioniert:Warum ist gleichzusetzen nicht für optionalen Arrays definiert
let a: [Int]? = [1]
let b: [Int]? = nil
a == b
Das wäre meine vorgeschlagen (wenn unelegant) Lösung sein. Aber es ist trivial, also habe ich das Gefühl, dass ich einen guten Grund vermisse, warum das nicht umgesetzt wird.
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
}
In der Tat optionaler Wert ist Enum: 'enum OptionalerWert {Fall kein Fall Einige (T)}' kann 'None' oder Ihr Typ sein, wenn Sie einen Wert für ein optionales Array haben, gibt es einen Rückgabetyp, der nicht gleich ist. Kein Rückgabewert im Falle eines zweiten Fehlers kein Typ. In der Tat ist es verschiedene Arten, wenn Sie 'a == b' tun –