2016-03-20 23 views
0

Ayarlanmış işlemleri kullanıcı tanımlı sınıflarla nasıl uygulayacağını bilerek, özelliği işletme koşulları olarak kullanır. Örneğin:swift seti kesişim, birleştirme, çıkarma

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] 

gibi herhangi bir yöntem var mı: (sözde kod)

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

... beklenen sonuç [classObj2] yani?

Herhangi bir öneri için çok teşekkürler!

cevap

1

Kesinlikle. MyClass'ınızın =='un figure değerlerini karşılaştırdığı şekilde Hashable ve Equatable'a uygun hale getirin. Örnek:

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

Lütfen kendi kodunuzu yazın. Sorduğun soruyu cevaplandırdım, yani, 'çıkarma' özel sınıfınızın bir kümesi için anlattığın şekilde nasıl çalışacaksın? Cevabımı anlamıyorsanız, kabul etmeyin ya da kabul etmeyin. – matt

+0

Bitti! Sağol Matt. –