Warum kompiliert die letzte Anweisung nicht mit dem Fehler: Binary operator '==' cannot be applied to two '[[Simple]]’ operands
, und gibt es eine Möglichkeit, die Simple
Struktur zu ändern oder den Operator ==
zu erweitern, um Gleichheitsprüfungen für verschachtelte Arrays (oder Wörterbücher)?Swift-Gleichheitsoperator auf geschachtelten Arrays
var i1: [Int] = [1]
var i2: [Int] = [1]
i1 == i2 // -> true
var i3: [[Int]] = [[1], [2]]
var i4: [[Int]] = [[1], [2]]
i3 == i4 // -> true
struct Simple: Equatable, Hashable {
let message: String
var hashValue: Int {
return message.hashValue
}
}
func ==(lhs: Simple, rhs: Simple) -> Bool {
return lhs.message == rhs.message
}
var a: [Simple] = [Simple(message: "a")]
var b: [Simple] = [Simple(message: "a")]
a == b // -> true
var x: [[Simple]] = [[Simple(message: "a")], [Simple(message: "b")]]
var y: [[Simple]] = [[Simple(message: "a")], [Simple(message: "b")]]
x == y // -> ERROR! Binary operator '==' cannot be applied to two '[[Simple]]’ operands
Vielleicht aktualisieren Sie die Implementierung zu 'LHs.ElementsEqual (rhs, von: ==)'? – kennytm
@kennytm: Guter Vorschlag, danke! –
Vorschlag: seit https://github.com/apple/swift-evolution/blob/master/proposals/0143-conditional-conformances.md wurde nicht in Swift 4 enthalten, aktualisieren Sie die Antwort –