Más información de the Perl 6 Wikipedia entry¿Qué usos se te ocurren para las uniones de Perl 6?
Junctions
Perl 6 introduce el concepto de uniones:. Valores que son materiales compuestos de otros valores [24] En los primeros días del diseño de Perl 6, estos fueron llamados "superposiciones", por analogía al concepto en física cuántica de superposiciones cuánticas, formas de onda que pueden ocupar simultáneamente varios estados hasta que la observación los "colapse". Un módulo de Perl 5 lanzado en 2000 por Damian Conway llamado Quantum :: Superpositions [25] proporcionó una prueba inicial del concepto. Si bien al principio, tales valores superpositivos parecían meramente una curiosidad programática, con el tiempo su utilidad e intuición se volvieron ampliamente reconocidas, y las uniones ahora ocupan un lugar central en el diseño de Perl 6.
En su forma más simple, las uniones se crean mediante la combinación de un conjunto de valores con los operadores junctive:
my $any_even_digit = 0|2|4|6|8; # any(0, 2, 4, 6, 8)
my $all_odd_digits = 1&3&5&7&9; # all(1, 3, 5, 7, 9)
| indica un valor que es igual a sus argumentos izquierdo o derecho. & indica un valor que es igual a sus argumentos a la izquierda y a la derecha. Estos valores se pueden usar en cualquier código que use un valor normal. Las operaciones realizadas en una unión actúan sobre todos los miembros de la unión por igual, y se combinan de acuerdo con el operador junctive. Entonces, ("manzana" | "plátano") ~ "s" produciría "manzanas" | "plátanos". En las comparaciones, las uniones arrojan un único resultado verdadero o falso para la comparación. "cualquier" unión devuelve verdadero si la comparación es verdadera para cualquiera de los elementos de la unión. "todas" las uniones devuelven verdadero si la comparación es verdadera para todos los elementos de la unión.
uniones también se pueden utilizar para aumentar más ricamente el sistema de tipos mediante la introducción de un estilo de programación genérica que está limitado a los cruces de los tipos:
sub get_tint (RGB_Color|CMYK_Color $color, num $opacity) { ... }
sub store_record (Record&Storable $rec) { ... }
Pude haber usado 'one()' en lugar de 'any()', pero 'any()' probablemente sería más rápido. –
En realidad para el caso de febrero, tal vez debería haber devuelto uno (28,29); –