Warum erhalte ich die Fehlermeldung "Protokoll ... kann nur als allgemeine Einschränkung verwendet werden, da es Anforderungen für" Selbst "oder den zugehörigen Typ enthält"?
Ich habe eine Erweiterung auf @ geschriebeInt
wie nachstehend
extension Int {
func squared () -> Int {
return self * self
}
}
print(10.squared()) // works
Der obige Code funktioniert. Jetzt möchte ich das @ erweiteIntegerType
-Protokoll, damit Int, UInt, Int64 usw. alle übereinstimmen. Mein Code ist wie folgt.
extension IntegerType {
func squared () -> IntegerType { // this line creates error
return self * self
}
}
Ich erhalte den Fehler:
Protocol 'IntegerType' kann nur als generische Einschränkung verwendet werden, da Self- oder zugeordnete Typanforderungen vorliegen.
Ich habe schon gesehenDie frage und sein video &Die Frage, konnte immer noch nicht verstehen. Ich habe nur verstanden, dass es einigeassociatedType
was in diesem Fall @ iSelf
konnte aber die Punkte nicht verbinden. Ich fühle mich auch wie mein Mangel an Wissen über dieGenerics
Betreff ist auch ein Grund ...
Kann jemand etwas über das Thema ausarbeiten und warum verursacht die Erweiterung einen Fehler?