2017-10-16 3 views

Antwort

0

Tupeln automatisch gleichzusetzen Protokoll entsprechen, wenn alle auch seine Elemente, um es anzupassen, so dass Sie nur darauf achten müssen, dass Ihre Klasse gleichzusetzen Protokoll implementiert:

class MyClass { 
    var name : String 
    init(_ _name : String) { 
    name = _name 
    } 
} 

extension MyClass: Equatable { 
    public static func ==(lhs: MyClass, rhs: MyClass) -> Bool { 
    return lhs.name == rhs.name 
    } 
} 

let ar : [(Int, MyClass)] = [ 
    (1, MyClass("A")), 
    (2, MyClass("B")), 
    (1, MyClass("A")) 
] 

if let ix = ar.index(where:{$0 == (1, MyClass("A"))}) { 
    print(ix) 
} else { 
    print("not found") 
} 

// 0 is printed 
+0

Minor Korrektur: Es sind '==' Operatoren für Tupel von gleichsetzbaren Elementen, aber die Tupel entsprechen nicht dem 'Equatable' Protokoll. –

+0

Vielen Dank für Ihre Antwort. Da das Protokoll Equatable für mich eine neue Sache ist, habe ich Fragen, wann ich es verwenden soll und warum ich es für mein Tupel brauche. Vielen Dank!! –

Verwandte Themen