AD

¿Ya dominas lo básico? Un curso estructurado de Swift es la vía rápida para dar el salto.

Ver cursos de Swift en Udemy

Enlace de afiliado. No te cuesta nada extra.

🐦Lecciones de Swift
Lección 51 / 68

Escribir funciones genéricas

En esta lección escribirás una función que sirve para varios tipos sin repetirla.

func larger<T: Comparable>(_ a: T, _ b: T) -> T declara un tipo T que se decide en cada llamada. La parte : Comparable es la restricción: solo valen tipos que sepan compararse.

El código de ejemplo compara dos números y luego dos palabras con la misma función.

La diferencia con el duck typing de los lenguajes dinámicos es que aquí el compilador lo comprueba antes de ejecutar. Si intentas llamar a la función con un tipo que no cumple Comparable, el error aparece al escribir, no en producción. Y no hay coste en tiempo de ejecución: el compilador genera versiones especializadas.

Con las palabras del ejemplo hay un detalle propio del español: la comparación de cadenas usa el orden de los códigos Unicode, donde las vocales con tilde van después de la z. Así que «Ángel» no queda donde lo pondría un diccionario. Para ordenar nombres de personas hace falta una comparación sensible al idioma, con compare(_:options:range:locale:).

Toda la biblioteca estándar de Swift está construida sobre genéricos: Array, Dictionary, Optional y Set son todos tipos genéricos.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Swift directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)