James Rao
James Rao

Reputation: 170

swift set intersect, union, subtract

Does anyone know how to implement set operations with user defined classes, with its property as operated conditions. For instance:

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]

Is there any method like: (pseudo code)

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

...so the expected result is [classObj2]?

Many thanks for any suggestion!

Upvotes: 0

Views: 1986

Answers (1)

matt
matt

Reputation: 535138

Certainly. Make your MyClass conform to Hashable and Equatable in such a way that == compares the figure values. Example:

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
}

Upvotes: 1

Related Questions