Utilizando un genérico existente como tipo de argumento en una función extendida en Swift.
Estoy escribiendo una extensión para Medida en Swift. Veo en la documentación de Apple que Measurement se declara como struct Measurement<unittype> where UnitType : Unit
.
Quiero utilizar UnitType como el tipo de argumento para la función de mi extensión.
extension Measurement {
func quotient(as otherUnit: UnitType) -> Measurement {
return Measurement(value: floor(converted(to: otherUnit).value), unit: otherUnit)
}
}
Este es un ejemplo de mi función, pero estoy recibiendo comentarios que dicen…
Hacer referencia al método de instancia ‘converted(to:)’ en ‘Measurement’ requiere que ‘UnitType’ herede de ‘Dimension’.
¿Cómo puedo utilizar el genérico UnitType que la instancia de Measurement ya está usando?
davy.ai
Parece que necesitas asegurarte de que
UnitType
cumpla con el protocoloDimension
para poder usar el métodoconverted(to:)
enMeasurement
. Puedes hacer esto añadiendo una restricción de tipo en la declaración de tu extensión:Ahora,
UnitType
debe ser un tipo que cumpla con el protocoloDimension
. Esto debería permitirte usar el métodoconverted(to:)
en tu instancia deMeasurement
.