2016-05-22 14 views
-1

Ich bin neu in Swift Entwicklung. Ich habe Erfahrung in Java vor und ich versuche, zwei generische Typen zu vergleichen. In Java kann dies mit == getan werden, aber wenn ich das gleiche zu tun versucht, ich habe „Binary Operator‚==‘kann nicht auf zwei‚T‘Operanden angewendet werden“Wie vergleichen Sie generische Typen in Swift?

Mein Code ist dies:

func contains(value: T) -> Bool { 
    var current = head 
    for _ in 1...count { 
     if (current.item! == value) { 
      return true 
     } 
     current = current.next! 
    } 
    return false 

Es ist eine Methode einer verknüpften Liste. Ich habe versucht, den Methodenkopf zu machen, aber es funktioniert immer noch nicht.

Ich bin neu zu Swift so kann jemand bitte helfen zu erklären, wie ich diesen Fehler beheben kann?

Danke!

+1

Willkommen bei StackOverflow. Um uns zu helfen, bitte ein funktionierendes Beispiel zur Demonstration Ihres Problems: [Wie stelle ich eine gute Frage?] –

+1

Welcher Typ ist 'current.item '? – tktsubota

+0

Ist Ihre 'LinkedList' Klasse Generika? Wenn dies der Fall ist, können Sie die Einschränkung "T" anwenden, um "Equatable" zu implementieren. – atxe

Antwort

-1

können Sie die Art werfen

as? (typeHere) 

ODER

typeHere(value) 

Ich könnte eine Variable versuchen zu schaffen und warf die Art wie

var bob : typeHere? 

dann verwenden

bob = value 

Art schwer tho, nur meine zwei Cent

0

Bitte finden übersetzbar Code in Swift 4

func contains<T: Equatable>(value1: T, value2: T){ 
if value1 == value2{ 
    print("Equal") 
} 
} 

contains(value1: 1, value2: 1) 

func newContains<T: Comparable>(value1: T, value2: T){ 
if value1 == value2{ 
    print("Equal") 
}else if value1 > value2{ 
    print("Greater than") 
} 
} 

newContains(value1: 2, value2: 1) 

Wie das funktioniert, um zu helfen?

Wie wir wissen, bedeutet die Protokollkonformität die Implementierung aller erforderlichen Methoden in diesem Protokoll. Ein vergleichbares Protokoll hat alle Vergleichsmethoden als erforderliche Parameter, und jeder Typ, der Vergleichbares implementiert, kann einen Vergleich durchführen.