Saltar al contenido
KodigoSwift

Tutorial Swift – Restricción por Tipo

Restricción por Tipo

La restricción por tipo será el tema que abordaremos en el Tutorial Swift de esta semana, un tema que no hemos tocado directamente pero que está muy relacionado con la programación genérica.

Recordemos que uno de los hechos más importantes que debemos tener en mente cuando estamos escribiendo código genérico es que por defecto no sabemos nada acerca del tipo de dato que será usado por nuestra función, método o tipo de dato propio. Hasta ahora hemos creado Pilas que manejan tipos de datos como Int y String pero también pudiéramos haberlas creado de cualquier otro tipo. El impacto práctico de no conocer el tipo de dato final es que podemos hacer bien poco con el comodín que estemos usando, ya que como es lógico ciertas operaciones son válidas para un tipo de terminado de datos y para otros no, por ejemplo no podemos comprobar que dos comodines del mismo tipo son iguales, el siguiente código generaría un error:

…el código de error sería:

El problema reside en que si esta función compilase podría trabajar con cualquier tipo de dato incluyendo aquellos a los que no tendría sentido que comparásemos como los closures o los tipos definidos por nosotros y que quizás no adoptan el protocolo Equatable. Dicho esto creo que se entiende perfectamente porque es un comportamiento peligroso y que el compilador evita, recordemos que el lenguaje de programación Swift está enfocado en la seguridad y en los casos de los posibles errores que acabo de comentar el anterior código generaría un error en tiempo de ejecución, algo así jamás compilaría.

Para solucionar esto, Swift permite el uso de la restricción de tipo que no es más que establecer ciertas características que tiene que cumplir el tipo de dato que pasemos a nuestra función genérica. Hay dos  restricciones de tipo: una donde se establece que el tipo de dato sea una subclase de una clase específica y el segundo donde este tipo tiene que adoptar un protocolo en particular. Un ejemplo de esto último sería el protocolo Equatable del que hablamos hace poco, con este estaríamos restringiendo el uso de tipos de datos que puedan ser comparados y así evitar los errores antes comentados, veamos:

…con esta pequeña modificación ya nuestro código compila.

Algo similar pudiéramos hacer para comparar la descripción de dos tipos de datos:

…aquí vemos una versión del ejemplo anterior, ahora trabaja con dos tipos de datos distintos y para ser aceptados por la función genérica cada uno de estos tiene que adoptar el protocolo CustomStringConvertible. Este protocolo obliga a los tipos de datos a implementar una representación textual del valor que almacena, representación textual que es la que se usa cuando intentamos escribir el valor de la variable o constante hacia un flujo de salida, como cuando usamos print.

Veamos un ejemplo de uso:

…la salida en pantalla:

Bueno amigos creo que con lo ya comentado y los ejemplos que hemos visto se entiende perfectamente la función y utilidad de una restricción por tipo.

Falta aún mucho por aprender en nuestro camino a convertirnos en iOS Developer. Suscríbete a nuestra lista de correo mediante el formulario en el panel derecho y síguenos en nuestras redes sociales. Mantente así al tanto de todas nuestras publicaciones futuras.

Espero que todo cuanto se ha dicho aquí, de una forma u otra le haya servido de aprendizaje, de referencia, que haya valido su preciado tiempo.

Este artículo, al igual que el resto, será revisado con cierta frecuencia en pos de mantener un contenido de calidad y actualizado.

Cualquier sugerencia, ya sea errores a corregir, información o ejemplos a añadir será, más que bienvenida, necesaria!

RECIBE CONTENIDO SIMILAR EN TU CORREO

RECIBE CONTENIDO SIMILAR EN TU CORREO

Suscríbete a nuestra lista de correo y mantente actualizado con las nuevas publicaciones.

Se ha suscrito correctamente!