Saltar al contenido →

Extensiones Restringidas por Tipo

Hasta la llegada de la versión 3.1 de Swift cuando creábamos una extensión de un tipo genérico y la queríamos restringir de alguna manera debíamos hacerlo única y exclusivamente mediante protocolos.

Pero con la nueva versión del lenguaje ahora ya podemos establecer restricciones en las extensiones de esos mismo tipos genéricos por tipo.

Venga, pon un ejemplo

Vamos a crear dos extensiones, una como los estábamos haciendo hasta ahora (mediante protocolos) y otra en la que vamos restringir la extensión para que sólo la puedan usar los tipos Int

Si intentáis compilar este mismo snippet con la vesión 3.0.2 del lenguaje obtendréis un error en la definición de la extensión restringida por el tipo Int que dirá algo como…

same-type requirement makes generic parameter ‘Element’ non-generic

Y recordad

  • La restricción mediante protocolo se indica con :
  • La restricción mediante tipo de indica con ==

Podéis leer más en la sección Extensions with a Generic Where Clause del capítulo Generics del libro The Swift Programming Language publicado por Apple.

Publicado en Swift