Tengo una lista de listas de dos elementos, como lo que obtendrías, por ejemplo (1..5) Z (20..24)
, que quiero convertir en un hash (en este ejemplo, lo que obtienes {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 =>24}
. Podría hacerlo "a mano", pero eso no es No es muy elegante, y estoy seguro de que Raku tiene una forma idiomática de hacerlo. La alternativa poco elegante que se me ocurre es:
my @a = (1..5) Z (20..24);
my %a;
for @a -> @x {
%a{@x[0]} = @x[1];
flat
debería funcionar.flat
aplanará múltiples niveles de una estructura de datos multinivel si los niveles sonList
s. Pero si ya ha introducido no-List
s, por ejemplo, asignar los datos a unArray
sin usarflat
antes de hacerlo, entoncesflat
ya no será la herramienta correcta. Por ejemplo, si ha asignado usandomy @a = 1..5 Z 20..25;
entoncesflat
por sí sola no hará el trabajo. Lo aplanaría asímy %h = @a[*;*];
. He escrito un poco más sobre el uso de subíndices para aplanar datos de varios niveles aquí .((1, (1, 2, 3)), (2, (5, 6)), (17, (3, 4, 5, 92, 31))
(es decir, el resultado final sería un hash con listas como valores)?