Eu tenho uma lista de listas de dois elementos, como o que você obteria, por exemplo (1..5) Z (20..24)
, que eu quero transformar em hash (neste exemplo, o que você ganha {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 =>24}
. Eu poderia fazê-lo "manualmente", mas isso não é é muito elegante e tenho certeza de que Raku tem uma maneira idiomática de fazê-lo.A alternativa deselegante que encontro é:
my @a = (1..5) Z (20..24);
my %a;
for @a -> @x {
%a{@x[0]} = @x[1];
flat
deve funcionar.flat
nivelará vários níveis de uma estrutura de dados multinível se os níveis foremList
s. Mas se você já introduziu não-List
s, por exemplo, atribuir os dados a umArray
sem usarflat
antes de fazê-lo,flat
não será mais a ferramenta certa. Por exemplo, se você o tiver atribuído,my @a = 1..5 Z 20..25;
entãoflat
sozinho não fará o trabalho. Eu achataria assimmy %h = @a[*;*];
. Eu escrevi um pouco mais sobre o uso de subscritos para achatar dados em vários níveis aqui .((1, (1, 2, 3)), (2, (5, 6)), (17, (3, 4, 5, 92, 31))
(isto é, o resultado final seria um hash com listas como valores)?