2016-06-06 12 views
-1

ich diese Protokollhierarchie haben:rasche allgemeine func mit überlappenden Typ Einschränkungen

protocol A {} 

protocol B: A {} 

was passiert, wenn ich die 2 folgenden funcs haben:

func myFunc<T : A where T: B>(object: T){ ... } 
func myfunc<T : A>(object: T){ ... } 

Welche Funktion ausgeführt wird, wenn ich rufe

myFunc(object: myInstance) 

mit myInstance konform zu Protokoll B. In diesem Fall entspricht myInstance den 2 Einschränkungen.

Dank

+2

sind Sie es versuchen können, selbst Sie wissen;) – Hamish

+0

was die allgemeine Regel war wissen wollte. – t4ncr3d3

+0

Ich dachte mir so viel und war gerade dabei, eine Antwort zu schreiben, als Daniel hereinkam. Obwohl Sie beachten sollten, dass diese Frage immer nur fragt "welche Funktion ausgeführt wird", nicht warum eine bestimmte Funktion ausgeführt wird. Es hilft immer, genau zu sein, was genau du fragst. – Hamish

Antwort

2

Die allgemeine Regel ist, dass der Compiler die meisten spezifische/meisten eingeschränkt Überlastung zu wählen versucht.

Für Ihr obiges Beispiel wäre es die erste Version von myFunc

Verwandte Themen