¿Por qué aparece el error "Protocolo ... solo se puede usar como una restricción genérica porque tiene requisitos de tipo Self o asociados"?
Escribí una extensión enInt
como a continuación.
extension Int {
func squared () -> Int {
return self * self
}
}
print(10.squared()) // works
El código anterior funciona. Ahora quiero extender elIntegerType
protocolo para que Int, UInt, Int64, etc. se ajusten. Mi código es el siguiente.
extension IntegerType {
func squared () -> IntegerType { // this line creates error
return self * self
}
}
Me sale el error:
El protocolo 'IntegerType' solo puede usarse como una restricción genérica porque tiene requisitos de tipo Self o asociados
Ya viesta pregunta y su video yesta pregunta, todavía no podía entender. Solo entendí que hay algunosassociatedType
que en este caso esSelf
pero no pudo conectar los puntos. Siento también mi falta de conocimiento sobre elGenerics
el sujeto también es una razón ...
¿Alguien puede elaborar un poco sobre el tema y por qué la extensión crea un error?