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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage