Mam listę dwuelementowych list, takich jak to, co otrzymujesz na przykład (1..5) Z (20..24)
, które chcę przekształcić w skrót (w tym przykładzie, co otrzymujesz {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 =>24}
. Mógłbym to zrobić „ręcznie”, ale to nie jest nie jest zbyt elegancki i jestem pewien, że Raku ma idiomatyczny sposób na zrobienie tego.
my @a = (1..5) Z (20..24);
my %a;
for @a -> @x {
%a{@x[0]} = @x[1];
flat
powinna działać.flat
spłaszczy wiele poziomów wielopoziomowej struktury danych, jeśli są to poziomyList
s. Ale jeśli już wprowadziłeś elementy inne niżList
np. Przypisywanie danychArray
bez użyciaflat
przed zrobieniem tego, toflat
nie będzie już właściwym narzędziem. Na przykład, jeśli przypisałeś to za pomocą,my @a = 1..5 Z 20..25;
wtedyflat
sam nie wykona zadania. Spłaszczyłbym to w ten sposóbmy %h = @a[*;*];
. Napisałem nieco więcej na temat używania indeksów dolnych do spłaszczania danych wielopoziomowych tutaj .((1, (1, 2, 3)), (2, (5, 6)), (17, (3, 4, 5, 92, 31))
(tzn. wynikiem końcowym byłby skrót z listami jako wartości)?