Tengo un protocolo llamado P y quiero escribir una función que devuelva una instancia de cualquier tipo que se ajuste a ese protocolo.
Yo escribí esto:
func f<T: P>() -> T? { // ... }Pero luego, cuando trato de llamarlo:
var fp = f() Recibo este error: Generic parameter 'T' could not be inferred . ¿Qué estoy haciendo mal y cómo solucionarlo? Gracias por tu ayuda.
Estás muy cerca. Digamos que tiene una struct A que se ajusta a P . Entonces podría especificar el parámetro genérico de la siguiente manera:
var fp: A? = f() Sin esa información, el compilador no puede saber qué tipo debería ser fp .