2016-03-20 4 views
0

Kann jemand Set-Operationen mit benutzerdefinierten Klassen implementieren, mit seiner Eigenschaft als bedienten Bedingungen. Zum Beispiel:swift set intersect, union, subtract

class myClass { 
    var figure: Int! 
} 

let classObj1 = myClass() 
classObj1.figure = 1 

let classObj2 = myClass() 
classObj2.figure = 2 

let classObj3 = myClass() 
classObj3.figure = 1 

let set1: Set = [classObj1] 
let set2: Set = [classObj2, classObj3] 

Gibt es eine Methode, wie: (Pseudocode)

set2.substract(set1) {s2, s1 in s2.figure == s1.figure} 

... so das erwartete Ergebnis ist [classObj2]?

Vielen Dank für jeden Vorschlag!

Antwort

1

Sicherlich. Machen Sie Ihre MyClass konform zu Hashable und Equatable in der Weise, dass == die figure Werte vergleicht. Beispiel:

class MyClass : Hashable { 
    var figure: Int 
    init(f:Int) {figure = f} 
    var hashValue : Int {return figure} 
} 
func ==(lhs:MyClass, rhs:MyClass) -> Bool { 
    return lhs.figure == rhs.figure 
} 
+0

Bitte schreiben Sie Ihren eigenen Code. Ich beantworte die Frage, die Sie gestellt haben, nämlich wie Sie "subtrahieren" so arbeiten, wie Sie es für ein Set Ihrer benutzerdefinierten Klasse beschrieben haben. Wenn du meine Antwort nicht verstehst, stimme nicht zu oder akzeptiere sie. – matt

+0

Fertig! Danke matt. –